@truewatchtech/cocos-sdk 0.1.0-alpha.4

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 (200) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +31 -0
  3. package/THIRD_PARTY_NOTICES +5 -0
  4. package/bin/cli.cjs +138 -0
  5. package/components/creator2/ReplayPrivacy.ts +23 -0
  6. package/components/creator3/ReplayPrivacy.ts +25 -0
  7. package/creator2/package.json +4 -0
  8. package/creator3/package.json +5 -0
  9. package/dist/creator2/core/auto-tracking.d.ts +35 -0
  10. package/dist/creator2/core/auto-tracking.d.ts.map +1 -0
  11. package/dist/creator2/core/auto-tracking.js +337 -0
  12. package/dist/creator2/core/auto-tracking.js.map +1 -0
  13. package/dist/creator2/core/client.d.ts +74 -0
  14. package/dist/creator2/core/client.d.ts.map +1 -0
  15. package/dist/creator2/core/client.js +176 -0
  16. package/dist/creator2/core/client.js.map +1 -0
  17. package/dist/creator2/core/index.d.ts +3 -0
  18. package/dist/creator2/core/index.d.ts.map +1 -0
  19. package/dist/creator2/core/index.js +6 -0
  20. package/dist/creator2/core/index.js.map +1 -0
  21. package/dist/creator2/core/modules.d.ts +159 -0
  22. package/dist/creator2/core/modules.d.ts.map +1 -0
  23. package/dist/creator2/core/modules.js +319 -0
  24. package/dist/creator2/core/modules.js.map +1 -0
  25. package/dist/creator2/core/replay-async-transport.d.ts +4 -0
  26. package/dist/creator2/core/replay-async-transport.d.ts.map +1 -0
  27. package/dist/creator2/core/replay-async-transport.js +67 -0
  28. package/dist/creator2/core/replay-async-transport.js.map +1 -0
  29. package/dist/creator2/core/replay-budget.d.ts +28 -0
  30. package/dist/creator2/core/replay-budget.d.ts.map +1 -0
  31. package/dist/creator2/core/replay-budget.js +113 -0
  32. package/dist/creator2/core/replay-budget.js.map +1 -0
  33. package/dist/creator2/core/replay-diagnostics.d.ts +36 -0
  34. package/dist/creator2/core/replay-diagnostics.d.ts.map +1 -0
  35. package/dist/creator2/core/replay-diagnostics.js +40 -0
  36. package/dist/creator2/core/replay-diagnostics.js.map +1 -0
  37. package/dist/creator2/core/replay-encoding.d.ts +31 -0
  38. package/dist/creator2/core/replay-encoding.d.ts.map +1 -0
  39. package/dist/creator2/core/replay-encoding.js +63 -0
  40. package/dist/creator2/core/replay-encoding.js.map +1 -0
  41. package/dist/creator2/core/replay-file.d.ts +5 -0
  42. package/dist/creator2/core/replay-file.d.ts.map +1 -0
  43. package/dist/creator2/core/replay-file.js +101 -0
  44. package/dist/creator2/core/replay-file.js.map +1 -0
  45. package/dist/creator2/core/replay-pixels.d.ts +3 -0
  46. package/dist/creator2/core/replay-pixels.d.ts.map +1 -0
  47. package/dist/creator2/core/replay-pixels.js +16 -0
  48. package/dist/creator2/core/replay-pixels.js.map +1 -0
  49. package/dist/creator2/core/replay-privacy-nodes.d.ts +14 -0
  50. package/dist/creator2/core/replay-privacy-nodes.d.ts.map +1 -0
  51. package/dist/creator2/core/replay-privacy-nodes.js +18 -0
  52. package/dist/creator2/core/replay-privacy-nodes.js.map +1 -0
  53. package/dist/creator2/core/replay-privacy.d.ts +15 -0
  54. package/dist/creator2/core/replay-privacy.d.ts.map +1 -0
  55. package/dist/creator2/core/replay-privacy.js +36 -0
  56. package/dist/creator2/core/replay-privacy.js.map +1 -0
  57. package/dist/creator2/core/replay.d.ts +99 -0
  58. package/dist/creator2/core/replay.d.ts.map +1 -0
  59. package/dist/creator2/core/replay.js +611 -0
  60. package/dist/creator2/core/replay.js.map +1 -0
  61. package/dist/creator2/core/transport.d.ts +17 -0
  62. package/dist/creator2/core/transport.d.ts.map +1 -0
  63. package/dist/creator2/core/transport.js +33 -0
  64. package/dist/creator2/core/transport.js.map +1 -0
  65. package/dist/creator2/core/types.d.ts +260 -0
  66. package/dist/creator2/core/types.d.ts.map +1 -0
  67. package/dist/creator2/core/types.js +3 -0
  68. package/dist/creator2/core/types.js.map +1 -0
  69. package/dist/creator2/core/validation.d.ts +14 -0
  70. package/dist/creator2/core/validation.d.ts.map +1 -0
  71. package/dist/creator2/core/validation.js +81 -0
  72. package/dist/creator2/core/validation.js.map +1 -0
  73. package/dist/creator2/core/version.d.ts +9 -0
  74. package/dist/creator2/core/version.d.ts.map +1 -0
  75. package/dist/creator2/core/version.js +14 -0
  76. package/dist/creator2/core/version.js.map +1 -0
  77. package/dist/creator2/creator2/auto.d.ts +9 -0
  78. package/dist/creator2/creator2/auto.d.ts.map +1 -0
  79. package/dist/creator2/creator2/auto.js +65 -0
  80. package/dist/creator2/creator2/auto.js.map +1 -0
  81. package/dist/creator2/creator2/capture.d.ts +17 -0
  82. package/dist/creator2/creator2/capture.d.ts.map +1 -0
  83. package/dist/creator2/creator2/capture.js +168 -0
  84. package/dist/creator2/creator2/capture.js.map +1 -0
  85. package/dist/creator2/creator2/index.d.ts +12 -0
  86. package/dist/creator2/creator2/index.d.ts.map +1 -0
  87. package/dist/creator2/creator2/index.js +41 -0
  88. package/dist/creator2/creator2/index.js.map +1 -0
  89. package/dist/creator2/creator2/transport.d.ts +8 -0
  90. package/dist/creator2/creator2/transport.d.ts.map +1 -0
  91. package/dist/creator2/creator2/transport.js +38 -0
  92. package/dist/creator2/creator2/transport.js.map +1 -0
  93. package/dist/creator3/core/auto-tracking.d.ts +35 -0
  94. package/dist/creator3/core/auto-tracking.d.ts.map +1 -0
  95. package/dist/creator3/core/auto-tracking.js +247 -0
  96. package/dist/creator3/core/auto-tracking.js.map +1 -0
  97. package/dist/creator3/core/client.d.ts +74 -0
  98. package/dist/creator3/core/client.d.ts.map +1 -0
  99. package/dist/creator3/core/client.js +158 -0
  100. package/dist/creator3/core/client.js.map +1 -0
  101. package/dist/creator3/core/index.d.ts +3 -0
  102. package/dist/creator3/core/index.d.ts.map +1 -0
  103. package/dist/creator3/core/index.js +2 -0
  104. package/dist/creator3/core/index.js.map +1 -0
  105. package/dist/creator3/core/modules.d.ts +159 -0
  106. package/dist/creator3/core/modules.d.ts.map +1 -0
  107. package/dist/creator3/core/modules.js +293 -0
  108. package/dist/creator3/core/modules.js.map +1 -0
  109. package/dist/creator3/core/replay-async-transport.d.ts +4 -0
  110. package/dist/creator3/core/replay-async-transport.d.ts.map +1 -0
  111. package/dist/creator3/core/replay-async-transport.js +16 -0
  112. package/dist/creator3/core/replay-async-transport.js.map +1 -0
  113. package/dist/creator3/core/replay-budget.d.ts +28 -0
  114. package/dist/creator3/core/replay-budget.d.ts.map +1 -0
  115. package/dist/creator3/core/replay-budget.js +105 -0
  116. package/dist/creator3/core/replay-budget.js.map +1 -0
  117. package/dist/creator3/core/replay-diagnostics.d.ts +36 -0
  118. package/dist/creator3/core/replay-diagnostics.d.ts.map +1 -0
  119. package/dist/creator3/core/replay-diagnostics.js +36 -0
  120. package/dist/creator3/core/replay-diagnostics.js.map +1 -0
  121. package/dist/creator3/core/replay-encoding.d.ts +31 -0
  122. package/dist/creator3/core/replay-encoding.d.ts.map +1 -0
  123. package/dist/creator3/core/replay-encoding.js +62 -0
  124. package/dist/creator3/core/replay-encoding.js.map +1 -0
  125. package/dist/creator3/core/replay-file.d.ts +5 -0
  126. package/dist/creator3/core/replay-file.d.ts.map +1 -0
  127. package/dist/creator3/core/replay-file.js +31 -0
  128. package/dist/creator3/core/replay-file.js.map +1 -0
  129. package/dist/creator3/core/replay-pixels.d.ts +3 -0
  130. package/dist/creator3/core/replay-pixels.d.ts.map +1 -0
  131. package/dist/creator3/core/replay-pixels.js +13 -0
  132. package/dist/creator3/core/replay-pixels.js.map +1 -0
  133. package/dist/creator3/core/replay-privacy-nodes.d.ts +14 -0
  134. package/dist/creator3/core/replay-privacy-nodes.d.ts.map +1 -0
  135. package/dist/creator3/core/replay-privacy-nodes.js +15 -0
  136. package/dist/creator3/core/replay-privacy-nodes.js.map +1 -0
  137. package/dist/creator3/core/replay-privacy.d.ts +15 -0
  138. package/dist/creator3/core/replay-privacy.d.ts.map +1 -0
  139. package/dist/creator3/core/replay-privacy.js +33 -0
  140. package/dist/creator3/core/replay-privacy.js.map +1 -0
  141. package/dist/creator3/core/replay.d.ts +99 -0
  142. package/dist/creator3/core/replay.d.ts.map +1 -0
  143. package/dist/creator3/core/replay.js +534 -0
  144. package/dist/creator3/core/replay.js.map +1 -0
  145. package/dist/creator3/core/transport.d.ts +17 -0
  146. package/dist/creator3/core/transport.d.ts.map +1 -0
  147. package/dist/creator3/core/transport.js +27 -0
  148. package/dist/creator3/core/transport.js.map +1 -0
  149. package/dist/creator3/core/types.d.ts +260 -0
  150. package/dist/creator3/core/types.d.ts.map +1 -0
  151. package/dist/creator3/core/types.js +2 -0
  152. package/dist/creator3/core/types.js.map +1 -0
  153. package/dist/creator3/core/validation.d.ts +14 -0
  154. package/dist/creator3/core/validation.d.ts.map +1 -0
  155. package/dist/creator3/core/validation.js +75 -0
  156. package/dist/creator3/core/validation.js.map +1 -0
  157. package/dist/creator3/core/version.d.ts +9 -0
  158. package/dist/creator3/core/version.d.ts.map +1 -0
  159. package/dist/creator3/core/version.js +11 -0
  160. package/dist/creator3/core/version.js.map +1 -0
  161. package/dist/creator3/creator3/auto.d.ts +9 -0
  162. package/dist/creator3/creator3/auto.d.ts.map +1 -0
  163. package/dist/creator3/creator3/auto.js +73 -0
  164. package/dist/creator3/creator3/auto.js.map +1 -0
  165. package/dist/creator3/creator3/capture.d.ts +17 -0
  166. package/dist/creator3/creator3/capture.d.ts.map +1 -0
  167. package/dist/creator3/creator3/capture.js +112 -0
  168. package/dist/creator3/creator3/capture.js.map +1 -0
  169. package/dist/creator3/creator3/index.d.ts +12 -0
  170. package/dist/creator3/creator3/index.d.ts.map +1 -0
  171. package/dist/creator3/creator3/index.js +23 -0
  172. package/dist/creator3/creator3/index.js.map +1 -0
  173. package/dist/creator3/creator3/replay-render-cycle.d.ts +9 -0
  174. package/dist/creator3/creator3/replay-render-cycle.d.ts.map +1 -0
  175. package/dist/creator3/creator3/replay-render-cycle.js +12 -0
  176. package/dist/creator3/creator3/replay-render-cycle.js.map +1 -0
  177. package/dist/creator3/creator3/transport.d.ts +9 -0
  178. package/dist/creator3/creator3/transport.d.ts.map +1 -0
  179. package/dist/creator3/creator3/transport.js +28 -0
  180. package/dist/creator3/creator3/transport.js.map +1 -0
  181. package/dist/creator3/package.json +1 -0
  182. package/extensions/creator2/install-native.cjs +385 -0
  183. package/extensions/creator2/main.js +23 -0
  184. package/extensions/creator2/package.json +6 -0
  185. package/extensions/creator3/dist/builder.js +9 -0
  186. package/extensions/creator3/dist/hooks.js +70 -0
  187. package/extensions/creator3/dist/main.js +4 -0
  188. package/extensions/creator3/install-native.cjs +385 -0
  189. package/extensions/creator3/package.json +10 -0
  190. package/native/android/src/main/java/com/ft/sdk/cocos/FTCocosBridge.java +536 -0
  191. package/native/android/src/main/java/com/ft/sdk/cocos/FTCocosBridgeProvider.java +70 -0
  192. package/native/android/src/main/java/com/ft/sdk/cocos/FTCocosReplayImageJobs.java +55 -0
  193. package/native/ios/FTCocosBridge.h +10 -0
  194. package/native/ios/FTCocosBridge.m +487 -0
  195. package/native/ios/FTCocosBridge.podspec +18 -0
  196. package/native/ios/FTCocosReplayImageJobs.h +11 -0
  197. package/native/ios/FTCocosReplayImageJobs.m +54 -0
  198. package/native/shared/FTReplayFileBridge.h +62 -0
  199. package/native/shared/FTReplayFileWorker.h +88 -0
  200. package/package.json +61 -0
@@ -0,0 +1,88 @@
1
+ #pragma once
2
+
3
+ #include <atomic>
4
+ #include <cerrno>
5
+ #include <cstdio>
6
+ #include <memory>
7
+ #include <string>
8
+ #include <thread>
9
+ #include <vector>
10
+
11
+ namespace ft_cocos {
12
+
13
+ // Accessed only by the script thread. Workers own their buffers and never touch JS.
14
+ class ReplayFileWorker {
15
+ enum Status { Pending, Written, Removed, Error };
16
+ struct Job {
17
+ std::string path;
18
+ std::atomic<Status> status{Pending};
19
+ std::atomic<bool> cancelled{false};
20
+ };
21
+ std::shared_ptr<Job> current;
22
+
23
+ public:
24
+ bool write(const unsigned char* bytes, size_t size, const std::string& path) {
25
+ if (current && current->cancelled.load() && current->status.load() != Pending) current.reset();
26
+ if (current || !bytes || size == 0 || size > 2048U * 2048U * 4U || path.empty()) return false;
27
+ try {
28
+ auto job = std::make_shared<Job>();
29
+ job->path = path;
30
+ // This bounded copy is necessary because the JS buffer can be collected/reused.
31
+ std::vector<unsigned char> pixels(bytes, bytes + size);
32
+ current = job;
33
+ std::thread([job](std::vector<unsigned char> data) {
34
+ FILE* file = std::fopen(job->path.c_str(), "wb");
35
+ bool ok = false;
36
+ if (file) {
37
+ const bool written = std::fwrite(data.data(), 1, data.size(), file) == data.size();
38
+ ok = std::fclose(file) == 0 && written;
39
+ }
40
+ if (!ok || job->cancelled.load()) std::remove(job->path.c_str());
41
+ job->status.store(ok ? Written : Error);
42
+ // Covers cleanup racing with the final status transition.
43
+ if (job->cancelled.load()) std::remove(job->path.c_str());
44
+ }, std::move(pixels)).detach();
45
+ } catch (...) {
46
+ current.reset();
47
+ return false;
48
+ }
49
+ return true;
50
+ }
51
+
52
+ bool remove(const std::string& path) {
53
+ if (!current || current->path != path || current->status.load() != Written) return false;
54
+ auto job = current;
55
+ job->status.store(Pending);
56
+ try {
57
+ std::thread([job]() {
58
+ const bool ok = std::remove(job->path.c_str()) == 0 || errno == ENOENT;
59
+ job->status.store(ok ? Removed : Error);
60
+ }).detach();
61
+ } catch (...) {
62
+ job->status.store(Written);
63
+ return false;
64
+ }
65
+ return true;
66
+ }
67
+
68
+ const char* poll() {
69
+ if (!current) return "error";
70
+ switch (current->status.load()) {
71
+ case Pending: return "pending";
72
+ case Written: return "written";
73
+ case Removed: current.reset(); return "removed";
74
+ case Error: current.reset(); return "error";
75
+ }
76
+ return "error";
77
+ }
78
+
79
+ void cancel() {
80
+ if (!current) return;
81
+ auto job = current;
82
+ job->cancelled.store(true);
83
+ if (job->status.load() == Written) remove(job->path);
84
+ // Keep the slot occupied until its worker exits, including across VM restarts.
85
+ }
86
+ };
87
+
88
+ } // namespace ft_cocos
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@truewatchtech/cocos-sdk",
3
+ "version": "0.1.0-alpha.4",
4
+ "description": "Observability SDK integration for Cocos Creator 2.4 and 3.x",
5
+ "license": "Apache-2.0",
6
+ "author": "TrueWatch",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/TrueWatchTech/datakit-cocos.git",
10
+ "directory": "packages/cocos"
11
+ },
12
+ "homepage": "https://github.com/TrueWatchTech/datakit-cocos#readme",
13
+ "bugs": {
14
+ "url": "https://github.com/TrueWatchTech/datakit-cocos/issues"
15
+ },
16
+ "keywords": [
17
+ "truewatch",
18
+ "cocos-creator",
19
+ "rum",
20
+ "session-replay",
21
+ "observability"
22
+ ],
23
+ "exports": {
24
+ "./creator2": {
25
+ "types": "./dist/creator2/creator2/index.d.ts",
26
+ "require": "./dist/creator2/creator2/index.js",
27
+ "default": "./dist/creator2/creator2/index.js"
28
+ },
29
+ "./creator3": {
30
+ "types": "./dist/creator3/creator3/index.d.ts",
31
+ "import": "./dist/creator3/creator3/index.js",
32
+ "default": "./dist/creator3/creator3/index.js"
33
+ },
34
+ "./package.json": "./package.json"
35
+ },
36
+ "files": [
37
+ "creator2",
38
+ "creator3",
39
+ "dist",
40
+ "components",
41
+ "extensions",
42
+ "native",
43
+ "bin",
44
+ "README.md",
45
+ "LICENSE",
46
+ "THIRD_PARTY_NOTICES"
47
+ ],
48
+ "bin": {
49
+ "truewatch-cocos": "bin/cli.cjs"
50
+ },
51
+ "engines": {
52
+ "node": ">=14"
53
+ },
54
+ "cocosSdk": {
55
+ "creator2": "2.4.5-2.4.15",
56
+ "creator3": "3.6.3-3.8.x"
57
+ },
58
+ "publishConfig": {
59
+ "access": "public"
60
+ }
61
+ }