@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.
- package/LICENSE +202 -0
- package/README.md +31 -0
- package/THIRD_PARTY_NOTICES +5 -0
- package/bin/cli.cjs +138 -0
- package/components/creator2/ReplayPrivacy.ts +23 -0
- package/components/creator3/ReplayPrivacy.ts +25 -0
- package/creator2/package.json +4 -0
- package/creator3/package.json +5 -0
- package/dist/creator2/core/auto-tracking.d.ts +35 -0
- package/dist/creator2/core/auto-tracking.d.ts.map +1 -0
- package/dist/creator2/core/auto-tracking.js +337 -0
- package/dist/creator2/core/auto-tracking.js.map +1 -0
- package/dist/creator2/core/client.d.ts +74 -0
- package/dist/creator2/core/client.d.ts.map +1 -0
- package/dist/creator2/core/client.js +176 -0
- package/dist/creator2/core/client.js.map +1 -0
- package/dist/creator2/core/index.d.ts +3 -0
- package/dist/creator2/core/index.d.ts.map +1 -0
- package/dist/creator2/core/index.js +6 -0
- package/dist/creator2/core/index.js.map +1 -0
- package/dist/creator2/core/modules.d.ts +159 -0
- package/dist/creator2/core/modules.d.ts.map +1 -0
- package/dist/creator2/core/modules.js +319 -0
- package/dist/creator2/core/modules.js.map +1 -0
- package/dist/creator2/core/replay-async-transport.d.ts +4 -0
- package/dist/creator2/core/replay-async-transport.d.ts.map +1 -0
- package/dist/creator2/core/replay-async-transport.js +67 -0
- package/dist/creator2/core/replay-async-transport.js.map +1 -0
- package/dist/creator2/core/replay-budget.d.ts +28 -0
- package/dist/creator2/core/replay-budget.d.ts.map +1 -0
- package/dist/creator2/core/replay-budget.js +113 -0
- package/dist/creator2/core/replay-budget.js.map +1 -0
- package/dist/creator2/core/replay-diagnostics.d.ts +36 -0
- package/dist/creator2/core/replay-diagnostics.d.ts.map +1 -0
- package/dist/creator2/core/replay-diagnostics.js +40 -0
- package/dist/creator2/core/replay-diagnostics.js.map +1 -0
- package/dist/creator2/core/replay-encoding.d.ts +31 -0
- package/dist/creator2/core/replay-encoding.d.ts.map +1 -0
- package/dist/creator2/core/replay-encoding.js +63 -0
- package/dist/creator2/core/replay-encoding.js.map +1 -0
- package/dist/creator2/core/replay-file.d.ts +5 -0
- package/dist/creator2/core/replay-file.d.ts.map +1 -0
- package/dist/creator2/core/replay-file.js +101 -0
- package/dist/creator2/core/replay-file.js.map +1 -0
- package/dist/creator2/core/replay-pixels.d.ts +3 -0
- package/dist/creator2/core/replay-pixels.d.ts.map +1 -0
- package/dist/creator2/core/replay-pixels.js +16 -0
- package/dist/creator2/core/replay-pixels.js.map +1 -0
- package/dist/creator2/core/replay-privacy-nodes.d.ts +14 -0
- package/dist/creator2/core/replay-privacy-nodes.d.ts.map +1 -0
- package/dist/creator2/core/replay-privacy-nodes.js +18 -0
- package/dist/creator2/core/replay-privacy-nodes.js.map +1 -0
- package/dist/creator2/core/replay-privacy.d.ts +15 -0
- package/dist/creator2/core/replay-privacy.d.ts.map +1 -0
- package/dist/creator2/core/replay-privacy.js +36 -0
- package/dist/creator2/core/replay-privacy.js.map +1 -0
- package/dist/creator2/core/replay.d.ts +99 -0
- package/dist/creator2/core/replay.d.ts.map +1 -0
- package/dist/creator2/core/replay.js +611 -0
- package/dist/creator2/core/replay.js.map +1 -0
- package/dist/creator2/core/transport.d.ts +17 -0
- package/dist/creator2/core/transport.d.ts.map +1 -0
- package/dist/creator2/core/transport.js +33 -0
- package/dist/creator2/core/transport.js.map +1 -0
- package/dist/creator2/core/types.d.ts +260 -0
- package/dist/creator2/core/types.d.ts.map +1 -0
- package/dist/creator2/core/types.js +3 -0
- package/dist/creator2/core/types.js.map +1 -0
- package/dist/creator2/core/validation.d.ts +14 -0
- package/dist/creator2/core/validation.d.ts.map +1 -0
- package/dist/creator2/core/validation.js +81 -0
- package/dist/creator2/core/validation.js.map +1 -0
- package/dist/creator2/core/version.d.ts +9 -0
- package/dist/creator2/core/version.d.ts.map +1 -0
- package/dist/creator2/core/version.js +14 -0
- package/dist/creator2/core/version.js.map +1 -0
- package/dist/creator2/creator2/auto.d.ts +9 -0
- package/dist/creator2/creator2/auto.d.ts.map +1 -0
- package/dist/creator2/creator2/auto.js +65 -0
- package/dist/creator2/creator2/auto.js.map +1 -0
- package/dist/creator2/creator2/capture.d.ts +17 -0
- package/dist/creator2/creator2/capture.d.ts.map +1 -0
- package/dist/creator2/creator2/capture.js +168 -0
- package/dist/creator2/creator2/capture.js.map +1 -0
- package/dist/creator2/creator2/index.d.ts +12 -0
- package/dist/creator2/creator2/index.d.ts.map +1 -0
- package/dist/creator2/creator2/index.js +41 -0
- package/dist/creator2/creator2/index.js.map +1 -0
- package/dist/creator2/creator2/transport.d.ts +8 -0
- package/dist/creator2/creator2/transport.d.ts.map +1 -0
- package/dist/creator2/creator2/transport.js +38 -0
- package/dist/creator2/creator2/transport.js.map +1 -0
- package/dist/creator3/core/auto-tracking.d.ts +35 -0
- package/dist/creator3/core/auto-tracking.d.ts.map +1 -0
- package/dist/creator3/core/auto-tracking.js +247 -0
- package/dist/creator3/core/auto-tracking.js.map +1 -0
- package/dist/creator3/core/client.d.ts +74 -0
- package/dist/creator3/core/client.d.ts.map +1 -0
- package/dist/creator3/core/client.js +158 -0
- package/dist/creator3/core/client.js.map +1 -0
- package/dist/creator3/core/index.d.ts +3 -0
- package/dist/creator3/core/index.d.ts.map +1 -0
- package/dist/creator3/core/index.js +2 -0
- package/dist/creator3/core/index.js.map +1 -0
- package/dist/creator3/core/modules.d.ts +159 -0
- package/dist/creator3/core/modules.d.ts.map +1 -0
- package/dist/creator3/core/modules.js +293 -0
- package/dist/creator3/core/modules.js.map +1 -0
- package/dist/creator3/core/replay-async-transport.d.ts +4 -0
- package/dist/creator3/core/replay-async-transport.d.ts.map +1 -0
- package/dist/creator3/core/replay-async-transport.js +16 -0
- package/dist/creator3/core/replay-async-transport.js.map +1 -0
- package/dist/creator3/core/replay-budget.d.ts +28 -0
- package/dist/creator3/core/replay-budget.d.ts.map +1 -0
- package/dist/creator3/core/replay-budget.js +105 -0
- package/dist/creator3/core/replay-budget.js.map +1 -0
- package/dist/creator3/core/replay-diagnostics.d.ts +36 -0
- package/dist/creator3/core/replay-diagnostics.d.ts.map +1 -0
- package/dist/creator3/core/replay-diagnostics.js +36 -0
- package/dist/creator3/core/replay-diagnostics.js.map +1 -0
- package/dist/creator3/core/replay-encoding.d.ts +31 -0
- package/dist/creator3/core/replay-encoding.d.ts.map +1 -0
- package/dist/creator3/core/replay-encoding.js +62 -0
- package/dist/creator3/core/replay-encoding.js.map +1 -0
- package/dist/creator3/core/replay-file.d.ts +5 -0
- package/dist/creator3/core/replay-file.d.ts.map +1 -0
- package/dist/creator3/core/replay-file.js +31 -0
- package/dist/creator3/core/replay-file.js.map +1 -0
- package/dist/creator3/core/replay-pixels.d.ts +3 -0
- package/dist/creator3/core/replay-pixels.d.ts.map +1 -0
- package/dist/creator3/core/replay-pixels.js +13 -0
- package/dist/creator3/core/replay-pixels.js.map +1 -0
- package/dist/creator3/core/replay-privacy-nodes.d.ts +14 -0
- package/dist/creator3/core/replay-privacy-nodes.d.ts.map +1 -0
- package/dist/creator3/core/replay-privacy-nodes.js +15 -0
- package/dist/creator3/core/replay-privacy-nodes.js.map +1 -0
- package/dist/creator3/core/replay-privacy.d.ts +15 -0
- package/dist/creator3/core/replay-privacy.d.ts.map +1 -0
- package/dist/creator3/core/replay-privacy.js +33 -0
- package/dist/creator3/core/replay-privacy.js.map +1 -0
- package/dist/creator3/core/replay.d.ts +99 -0
- package/dist/creator3/core/replay.d.ts.map +1 -0
- package/dist/creator3/core/replay.js +534 -0
- package/dist/creator3/core/replay.js.map +1 -0
- package/dist/creator3/core/transport.d.ts +17 -0
- package/dist/creator3/core/transport.d.ts.map +1 -0
- package/dist/creator3/core/transport.js +27 -0
- package/dist/creator3/core/transport.js.map +1 -0
- package/dist/creator3/core/types.d.ts +260 -0
- package/dist/creator3/core/types.d.ts.map +1 -0
- package/dist/creator3/core/types.js +2 -0
- package/dist/creator3/core/types.js.map +1 -0
- package/dist/creator3/core/validation.d.ts +14 -0
- package/dist/creator3/core/validation.d.ts.map +1 -0
- package/dist/creator3/core/validation.js +75 -0
- package/dist/creator3/core/validation.js.map +1 -0
- package/dist/creator3/core/version.d.ts +9 -0
- package/dist/creator3/core/version.d.ts.map +1 -0
- package/dist/creator3/core/version.js +11 -0
- package/dist/creator3/core/version.js.map +1 -0
- package/dist/creator3/creator3/auto.d.ts +9 -0
- package/dist/creator3/creator3/auto.d.ts.map +1 -0
- package/dist/creator3/creator3/auto.js +73 -0
- package/dist/creator3/creator3/auto.js.map +1 -0
- package/dist/creator3/creator3/capture.d.ts +17 -0
- package/dist/creator3/creator3/capture.d.ts.map +1 -0
- package/dist/creator3/creator3/capture.js +112 -0
- package/dist/creator3/creator3/capture.js.map +1 -0
- package/dist/creator3/creator3/index.d.ts +12 -0
- package/dist/creator3/creator3/index.d.ts.map +1 -0
- package/dist/creator3/creator3/index.js +23 -0
- package/dist/creator3/creator3/index.js.map +1 -0
- package/dist/creator3/creator3/replay-render-cycle.d.ts +9 -0
- package/dist/creator3/creator3/replay-render-cycle.d.ts.map +1 -0
- package/dist/creator3/creator3/replay-render-cycle.js +12 -0
- package/dist/creator3/creator3/replay-render-cycle.js.map +1 -0
- package/dist/creator3/creator3/transport.d.ts +9 -0
- package/dist/creator3/creator3/transport.d.ts.map +1 -0
- package/dist/creator3/creator3/transport.js +28 -0
- package/dist/creator3/creator3/transport.js.map +1 -0
- package/dist/creator3/package.json +1 -0
- package/extensions/creator2/install-native.cjs +385 -0
- package/extensions/creator2/main.js +23 -0
- package/extensions/creator2/package.json +6 -0
- package/extensions/creator3/dist/builder.js +9 -0
- package/extensions/creator3/dist/hooks.js +70 -0
- package/extensions/creator3/dist/main.js +4 -0
- package/extensions/creator3/install-native.cjs +385 -0
- package/extensions/creator3/package.json +10 -0
- package/native/android/src/main/java/com/ft/sdk/cocos/FTCocosBridge.java +536 -0
- package/native/android/src/main/java/com/ft/sdk/cocos/FTCocosBridgeProvider.java +70 -0
- package/native/android/src/main/java/com/ft/sdk/cocos/FTCocosReplayImageJobs.java +55 -0
- package/native/ios/FTCocosBridge.h +10 -0
- package/native/ios/FTCocosBridge.m +487 -0
- package/native/ios/FTCocosBridge.podspec +18 -0
- package/native/ios/FTCocosReplayImageJobs.h +11 -0
- package/native/ios/FTCocosReplayImageJobs.m +54 -0
- package/native/shared/FTReplayFileBridge.h +62 -0
- package/native/shared/FTReplayFileWorker.h +88 -0
- 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
|
+
}
|