@cloudcare/cocos-sdk 0.1.1-alpha.1 → 0.1.1-alpha.3
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/README.md +35 -6
- package/bin/cli.cjs +42 -5
- package/bin/project-configuration.cjs +135 -0
- package/bin/web-assets.cjs +32 -0
- package/dist/creator2/core/auto-tracking.d.ts +3 -1
- package/dist/creator2/core/auto-tracking.d.ts.map +1 -1
- package/dist/creator2/core/auto-tracking.js +60 -7
- package/dist/creator2/core/auto-tracking.js.map +1 -1
- package/dist/creator2/core/client.d.ts +1 -0
- package/dist/creator2/core/client.d.ts.map +1 -1
- package/dist/creator2/core/client.js +14 -3
- package/dist/creator2/core/client.js.map +1 -1
- package/dist/creator2/core/index.js.map +1 -1
- package/dist/creator2/core/modules.d.ts.map +1 -1
- package/dist/creator2/core/modules.js +2 -2
- package/dist/creator2/core/modules.js.map +1 -1
- package/dist/creator2/core/observation.d.ts +25 -0
- package/dist/creator2/core/observation.d.ts.map +1 -0
- package/dist/creator2/core/observation.js +93 -0
- package/dist/creator2/core/observation.js.map +1 -0
- package/dist/creator2/core/platform-client.d.ts +46 -0
- package/dist/creator2/core/platform-client.d.ts.map +1 -0
- package/dist/creator2/core/platform-client.js +195 -0
- package/dist/creator2/core/platform-client.js.map +1 -0
- package/dist/creator2/core/platform-options.d.ts +30 -0
- package/dist/creator2/core/platform-options.d.ts.map +1 -0
- package/dist/creator2/core/platform-options.js +3 -0
- package/dist/creator2/core/platform-options.js.map +1 -0
- package/dist/creator2/core/platform-runtime.d.ts +60 -0
- package/dist/creator2/core/platform-runtime.d.ts.map +1 -0
- package/dist/creator2/core/platform-runtime.js +36 -0
- package/dist/creator2/core/platform-runtime.js.map +1 -0
- package/dist/creator2/core/plugin-api.d.ts +1 -1
- package/dist/creator2/core/plugin-api.d.ts.map +1 -1
- package/dist/creator2/core/plugin-api.js.map +1 -1
- package/dist/creator2/core/transport.d.ts +1 -1
- package/dist/creator2/core/transport.d.ts.map +1 -1
- package/dist/creator2/core/transport.js.map +1 -1
- package/dist/creator2/core/types.d.ts +9 -0
- package/dist/creator2/core/types.d.ts.map +1 -1
- package/dist/creator2/core/types.js.map +1 -1
- package/dist/creator2/core/validation.d.ts +1 -0
- package/dist/creator2/core/validation.d.ts.map +1 -1
- package/dist/creator2/core/validation.js +13 -0
- package/dist/creator2/core/validation.js.map +1 -1
- package/dist/creator2/core/version.d.ts +1 -3
- package/dist/creator2/core/version.d.ts.map +1 -1
- package/dist/creator2/core/version.js +2 -4
- package/dist/creator2/core/version.js.map +1 -1
- package/dist/creator2/creator2/auto.js.map +1 -1
- package/dist/creator2/creator2/index.d.ts +6 -3
- package/dist/creator2/creator2/index.d.ts.map +1 -1
- package/dist/creator2/creator2/index.js +12 -8
- package/dist/creator2/creator2/index.js.map +1 -1
- package/dist/creator2/creator2/transport.js.map +1 -1
- package/dist/creator2/native/bootstrap.d.ts +2 -0
- package/dist/creator2/native/bootstrap.d.ts.map +1 -0
- package/dist/creator2/native/bootstrap.js +35 -0
- package/dist/creator2/native/bootstrap.js.map +1 -0
- package/dist/creator2/native/error-bootstrap.d.ts +2 -0
- package/dist/creator2/native/error-bootstrap.d.ts.map +1 -0
- package/dist/creator2/native/error-bootstrap.js +7 -0
- package/dist/creator2/native/error-bootstrap.js.map +1 -0
- package/dist/creator2/native/jsb-errors.d.ts +21 -0
- package/dist/creator2/native/jsb-errors.d.ts.map +1 -0
- package/dist/creator2/native/jsb-errors.js +91 -0
- package/dist/creator2/native/jsb-errors.js.map +1 -0
- package/dist/creator2/web/bootstrap.d.ts +3 -0
- package/dist/creator2/web/bootstrap.d.ts.map +1 -0
- package/dist/creator2/web/bootstrap.js +15 -0
- package/dist/creator2/web/bootstrap.js.map +1 -0
- package/dist/creator2/web/client.d.ts +60 -0
- package/dist/creator2/web/client.d.ts.map +1 -0
- package/dist/creator2/web/client.js +293 -0
- package/dist/creator2/web/client.js.map +1 -0
- package/dist/creator2/web/creator2.d.ts +5 -0
- package/dist/creator2/web/creator2.d.ts.map +1 -0
- package/dist/creator2/web/creator2.js +27 -0
- package/dist/creator2/web/creator2.js.map +1 -0
- package/dist/creator2/web/privacy.d.ts +3 -0
- package/dist/creator2/web/privacy.d.ts.map +1 -0
- package/dist/creator2/web/privacy.js +39 -0
- package/dist/creator2/web/privacy.js.map +1 -0
- package/dist/creator2/web/runtime.d.ts +23 -0
- package/dist/creator2/web/runtime.d.ts.map +1 -0
- package/dist/creator2/web/runtime.js +264 -0
- package/dist/creator2/web/runtime.js.map +1 -0
- package/dist/creator2/web/types.d.ts +91 -0
- package/dist/creator2/web/types.d.ts.map +1 -0
- package/dist/creator2/web/types.js +3 -0
- package/dist/creator2/web/types.js.map +1 -0
- package/dist/creator3/core/auto-tracking.d.ts +3 -1
- package/dist/creator3/core/auto-tracking.d.ts.map +1 -1
- package/dist/creator3/core/auto-tracking.js +60 -7
- package/dist/creator3/core/auto-tracking.js.map +1 -1
- package/dist/creator3/core/client.d.ts +1 -0
- package/dist/creator3/core/client.d.ts.map +1 -1
- package/dist/creator3/core/client.js +6 -3
- package/dist/creator3/core/client.js.map +1 -1
- package/dist/creator3/core/modules.d.ts.map +1 -1
- package/dist/creator3/core/modules.js +4 -9
- package/dist/creator3/core/modules.js.map +1 -1
- package/dist/creator3/core/observation.d.ts +25 -0
- package/dist/creator3/core/observation.d.ts.map +1 -0
- package/dist/creator3/core/observation.js +84 -0
- package/dist/creator3/core/observation.js.map +1 -0
- package/dist/creator3/core/platform-client.d.ts +46 -0
- package/dist/creator3/core/platform-client.d.ts.map +1 -0
- package/dist/creator3/core/platform-client.js +135 -0
- package/dist/creator3/core/platform-client.js.map +1 -0
- package/dist/creator3/core/platform-options.d.ts +30 -0
- package/dist/creator3/core/platform-options.d.ts.map +1 -0
- package/dist/creator3/core/platform-options.js +2 -0
- package/dist/creator3/core/platform-options.js.map +1 -0
- package/dist/creator3/core/platform-runtime.d.ts +60 -0
- package/dist/creator3/core/platform-runtime.d.ts.map +1 -0
- package/dist/creator3/core/platform-runtime.js +29 -0
- package/dist/creator3/core/platform-runtime.js.map +1 -0
- package/dist/creator3/core/plugin-api.d.ts +1 -1
- package/dist/creator3/core/plugin-api.d.ts.map +1 -1
- package/dist/creator3/core/transport.d.ts +1 -1
- package/dist/creator3/core/transport.d.ts.map +1 -1
- package/dist/creator3/core/types.d.ts +9 -0
- package/dist/creator3/core/types.d.ts.map +1 -1
- package/dist/creator3/core/validation.d.ts +1 -0
- package/dist/creator3/core/validation.d.ts.map +1 -1
- package/dist/creator3/core/validation.js +11 -0
- package/dist/creator3/core/validation.js.map +1 -1
- package/dist/creator3/core/version.d.ts +1 -3
- package/dist/creator3/core/version.d.ts.map +1 -1
- package/dist/creator3/core/version.js +1 -3
- package/dist/creator3/core/version.js.map +1 -1
- package/dist/creator3/creator3/index.d.ts +6 -3
- package/dist/creator3/creator3/index.d.ts.map +1 -1
- package/dist/creator3/creator3/index.js +13 -8
- package/dist/creator3/creator3/index.js.map +1 -1
- package/dist/creator3/native/bootstrap.d.ts +2 -0
- package/dist/creator3/native/bootstrap.d.ts.map +1 -0
- package/dist/creator3/native/bootstrap.js +32 -0
- package/dist/creator3/native/bootstrap.js.map +1 -0
- package/dist/creator3/native/error-bootstrap.d.ts +2 -0
- package/dist/creator3/native/error-bootstrap.d.ts.map +1 -0
- package/dist/creator3/native/error-bootstrap.js +5 -0
- package/dist/creator3/native/error-bootstrap.js.map +1 -0
- package/dist/creator3/native/jsb-errors.d.ts +21 -0
- package/dist/creator3/native/jsb-errors.d.ts.map +1 -0
- package/dist/creator3/native/jsb-errors.js +82 -0
- package/dist/creator3/native/jsb-errors.js.map +1 -0
- package/dist/creator3/web/bootstrap.d.ts +3 -0
- package/dist/creator3/web/bootstrap.d.ts.map +1 -0
- package/dist/creator3/web/bootstrap.js +11 -0
- package/dist/creator3/web/bootstrap.js.map +1 -0
- package/dist/creator3/web/client.d.ts +60 -0
- package/dist/creator3/web/client.d.ts.map +1 -0
- package/dist/creator3/web/client.js +255 -0
- package/dist/creator3/web/client.js.map +1 -0
- package/dist/creator3/web/creator3.d.ts +5 -0
- package/dist/creator3/web/creator3.d.ts.map +1 -0
- package/dist/creator3/web/creator3.js +11 -0
- package/dist/creator3/web/creator3.js.map +1 -0
- package/dist/creator3/web/privacy.d.ts +3 -0
- package/dist/creator3/web/privacy.d.ts.map +1 -0
- package/dist/creator3/web/privacy.js +26 -0
- package/dist/creator3/web/privacy.js.map +1 -0
- package/dist/creator3/web/runtime.d.ts +23 -0
- package/dist/creator3/web/runtime.d.ts.map +1 -0
- package/dist/creator3/web/runtime.js +266 -0
- package/dist/creator3/web/runtime.js.map +1 -0
- package/dist/creator3/web/types.d.ts +91 -0
- package/dist/creator3/web/types.d.ts.map +1 -0
- package/dist/creator3/web/types.js +2 -0
- package/dist/creator3/web/types.js.map +1 -0
- package/extensions/creator2/install-native.cjs +19 -1
- package/extensions/creator2/install-web.cjs +69 -0
- package/extensions/creator2/main.js +19 -2
- package/extensions/creator2/project-configuration.cjs +135 -0
- package/extensions/creator3/dist/hooks.js +13 -0
- package/extensions/creator3/install-native.cjs +19 -1
- package/extensions/creator3/install-web.cjs +69 -0
- package/extensions/creator3/project-configuration.cjs +135 -0
- package/native/android/src/main/java/com/ft/sdk/cocos/FTCocosBridge.java +7 -10
- package/native/ios/FTCocosBridge.m +6 -4
- package/native/ios/FTCocosBridge.podspec +1 -1
- package/native/jsb-errors.js +266 -0
- package/package.json +19 -3
- package/runtime/native.js +1351 -0
- package/web/bootstrap/package.json +4 -0
- package/web/bootstrap.js +1053 -0
- package/web/bootstrap.js.map +7 -0
- package/web/creator2/package.json +4 -0
- package/web/creator3/package.json +4 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const NATIVE = ['captureFps', 'maxImageDimension', 'imagePolicy', 'touchPrivacy'];
|
|
6
|
+
const WEB = ['captureFps', 'maxImageDimension', 'quality', 'maxFrameBytes', 'canvasPrivacy', 'canvasId'];
|
|
7
|
+
const SAMPLING = ['sessionReplaySamplingRate', 'sessionReplayOnErrorSamplingRate'];
|
|
8
|
+
function object(value, name) {
|
|
9
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) throw new Error(`${name} must be an object`);
|
|
10
|
+
}
|
|
11
|
+
function keys(value, allowed, name) {
|
|
12
|
+
object(value, name);
|
|
13
|
+
for (const key of Object.keys(value)) if (!allowed.includes(key)) throw new Error(`Unsupported ${name}.${key}`);
|
|
14
|
+
}
|
|
15
|
+
function number(value, min, max, name, integer = true) {
|
|
16
|
+
if (value !== undefined && (typeof value !== 'number' || !Number.isFinite(value) || value < min || value > max || integer && !Number.isInteger(value))) {
|
|
17
|
+
throw new Error(`${name} must be ${integer ? 'an integer' : 'a number'} between ${min} and ${max}`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function validateReplay(replay) {
|
|
21
|
+
if (replay === undefined) return;
|
|
22
|
+
keys(replay, ['enabled', ...SAMPLING, 'native', 'web'], 'replay');
|
|
23
|
+
if (replay.enabled !== undefined && typeof replay.enabled !== 'boolean') throw new Error('replay.enabled must be boolean');
|
|
24
|
+
for (const field of SAMPLING) number(replay[field], 0, 100, `replay.${field}`, false);
|
|
25
|
+
for (const platform of ['native', 'web']) {
|
|
26
|
+
const options = replay[platform];
|
|
27
|
+
if (options === undefined || options === false) continue;
|
|
28
|
+
keys(options, platform === 'native' ? NATIVE : WEB, `replay.${platform}`);
|
|
29
|
+
number(options.captureFps, 1, 5, `replay.${platform}.captureFps`);
|
|
30
|
+
number(options.maxImageDimension, 1, 2048, `replay.${platform}.maxImageDimension`);
|
|
31
|
+
if (platform === 'native') {
|
|
32
|
+
if (options.touchPrivacy !== undefined && !['hide', 'show'].includes(options.touchPrivacy)) throw new Error('replay.native.touchPrivacy must be hide or show');
|
|
33
|
+
if (options.imagePolicy !== undefined) {
|
|
34
|
+
keys(options.imagePolicy, ['quality', 'maxFrameBytes'], 'replay.native.imagePolicy');
|
|
35
|
+
if (options.imagePolicy.quality !== undefined && !['low', 'medium', 'high'].includes(options.imagePolicy.quality)) throw new Error('replay.native.imagePolicy.quality must be low, medium, or high');
|
|
36
|
+
number(options.imagePolicy.maxFrameBytes, 1024, 1048576, 'replay.native.imagePolicy.maxFrameBytes');
|
|
37
|
+
}
|
|
38
|
+
} else {
|
|
39
|
+
if (options.canvasPrivacy !== undefined && !['block', 'allow'].includes(options.canvasPrivacy)) throw new Error('replay.web.canvasPrivacy must be block or allow');
|
|
40
|
+
if (options.canvasId !== undefined && (typeof options.canvasId !== 'string' || !options.canvasId.trim())) throw new Error('replay.web.canvasId must be a nonempty string');
|
|
41
|
+
if (options.quality !== undefined && !['low', 'medium', 'high'].includes(options.quality)) number(options.quality, 0, 1, 'replay.web.quality', false);
|
|
42
|
+
number(options.maxFrameBytes, 1024, 1048576, 'replay.web.maxFrameBytes');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function unified(project) {
|
|
47
|
+
return project.configuration !== undefined || Object.keys(project.replay || {}).some(key => key !== 'enabled');
|
|
48
|
+
}
|
|
49
|
+
function replayOptions(project, platform) {
|
|
50
|
+
validateReplay(project.replay);
|
|
51
|
+
const replay = project.replay;
|
|
52
|
+
if (!replay?.enabled || replay[platform] === false) return undefined;
|
|
53
|
+
return {
|
|
54
|
+
sessionReplaySamplingRate: replay.sessionReplaySamplingRate ?? 100,
|
|
55
|
+
sessionReplayOnErrorSamplingRate: replay.sessionReplayOnErrorSamplingRate ?? 0,
|
|
56
|
+
...(replay[platform] || {}),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function nativeReplayEnabled(project) { validateReplay(project.replay); return project.replay?.enabled === true && project.replay.native !== false; }
|
|
60
|
+
function resolveNativeConfiguration(project) {
|
|
61
|
+
validateReplay(project.replay);
|
|
62
|
+
if (project.configuration === undefined) return undefined;
|
|
63
|
+
object(project.configuration, 'configuration');
|
|
64
|
+
const config = JSON.parse(JSON.stringify(project.configuration));
|
|
65
|
+
keys(config, ['sdk', 'rum', 'logger', 'trace', 'autoTrack'], 'configuration');
|
|
66
|
+
object(config.sdk, 'configuration.sdk');
|
|
67
|
+
const replay = replayOptions(project, 'native');
|
|
68
|
+
if (replay) {
|
|
69
|
+
if (!config.rum) throw new Error('Native Replay requires configuration.rum');
|
|
70
|
+
config.replay = replay;
|
|
71
|
+
}
|
|
72
|
+
return config;
|
|
73
|
+
}
|
|
74
|
+
function resolveWebConfiguration(project) {
|
|
75
|
+
validateReplay(project.replay);
|
|
76
|
+
if (project.web?.enabled !== true) return undefined;
|
|
77
|
+
const override = project.web.configuration || {};
|
|
78
|
+
object(override, 'web.configuration');
|
|
79
|
+
if (!unified(project)) return override;
|
|
80
|
+
const native = resolveNativeConfiguration(project) || {};
|
|
81
|
+
// Copy only shared Browser settings. Native endpoints and application IDs stay out of Web artifacts.
|
|
82
|
+
const fields = {
|
|
83
|
+
sdk: ['serviceName', 'env', 'globalContext'],
|
|
84
|
+
rum: ['sessionSamplingRate', 'sampleRate', 'sessionOnErrorSamplingRate', 'sessionOnErrorSampleRate', 'globalContext'],
|
|
85
|
+
logger: ['logSamplingRate', 'sampleRate', 'enableCustomLog', 'logLevelFilters', 'globalContext'],
|
|
86
|
+
trace: ['traceSamplingRate', 'sampleRate', 'traceType'],
|
|
87
|
+
};
|
|
88
|
+
const config = {};
|
|
89
|
+
for (const [group, names] of Object.entries(fields)) {
|
|
90
|
+
if (native[group] !== undefined) config[group] = Object.fromEntries(names.filter(key => native[group][key] !== undefined).map(key => [key, native[group][key]]));
|
|
91
|
+
if (override[group] !== undefined) config[group] = { ...config[group], ...override[group] };
|
|
92
|
+
}
|
|
93
|
+
if (native.autoTrack || override.autoTrack) config.autoTrack = { ...native.autoTrack, ...override.autoTrack };
|
|
94
|
+
config.web = { ...override.web };
|
|
95
|
+
if (config.web.replay !== undefined) throw new Error('Configure Replay once at replay.web; remove web.configuration.web.replay');
|
|
96
|
+
const replay = replayOptions(project, 'web');
|
|
97
|
+
if (replay) {
|
|
98
|
+
if (!config.rum) throw new Error('Web Replay requires configuration.rum or web.configuration.rum');
|
|
99
|
+
config.web.replay = { enabled: true, ...replay };
|
|
100
|
+
}
|
|
101
|
+
return config;
|
|
102
|
+
}
|
|
103
|
+
function readProject(extensionRoot) {
|
|
104
|
+
const file = path.resolve(extensionRoot, '..', '..', 'cocos-sdk.config.json');
|
|
105
|
+
return fs.existsSync(file) ? JSON.parse(fs.readFileSync(file, 'utf8')) : {};
|
|
106
|
+
}
|
|
107
|
+
function nativeConfigurationScript(configuration) {
|
|
108
|
+
return '\n/* COCOS_PROJECT_CONFIGURATION_BEGIN */\n'
|
|
109
|
+
+ '(typeof window !== "undefined" ? window : globalThis).__FT_COCOS_CONFIGURATION__ = '
|
|
110
|
+
+ (configuration ? JSON.stringify(configuration).replace(/</g, '\\u003c') : 'undefined')
|
|
111
|
+
+ ';\n/* COCOS_PROJECT_CONFIGURATION_END */\n';
|
|
112
|
+
}
|
|
113
|
+
function configureNativeBuild(buildRoot, extensionRoot) {
|
|
114
|
+
if (!buildRoot || !fs.existsSync(buildRoot)) return;
|
|
115
|
+
const config = resolveNativeConfiguration(readProject(extensionRoot));
|
|
116
|
+
let found = false;
|
|
117
|
+
function visit(directory, depth) {
|
|
118
|
+
if (depth > 12) return;
|
|
119
|
+
for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
|
|
120
|
+
if (['node_modules', '.git', 'library', 'temp', 'cocos-sdk-native'].includes(entry.name)) continue;
|
|
121
|
+
const file = path.join(directory, entry.name);
|
|
122
|
+
if (entry.isDirectory()) visit(file, depth + 1);
|
|
123
|
+
else if (entry.isFile() && entry.name.endsWith('.js')) {
|
|
124
|
+
const source = fs.readFileSync(file, 'utf8');
|
|
125
|
+
if (!source.includes('__FT_COCOS_NATIVE_FACTORY__')) continue;
|
|
126
|
+
if (config?.replay && !source.includes('__FT_COCOS_REPLAY_FACTORY__')) throw new Error('Replay was enabled after installation. Rerun the installer with --replay and rebuild.');
|
|
127
|
+
const clean = source.replace(/\n?\/\* COCOS_PROJECT_CONFIGURATION_BEGIN \*\/[\s\S]*?\/\* COCOS_PROJECT_CONFIGURATION_END \*\/\n?/g, '');
|
|
128
|
+
fs.writeFileSync(file, clean + nativeConfigurationScript(config)); found = true;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
visit(path.resolve(buildRoot), 0);
|
|
133
|
+
if (config && !found) throw new Error('Native SDK runtime was not included in the build. Rerun the installer and rebuild.');
|
|
134
|
+
}
|
|
135
|
+
module.exports = { resolveNativeConfiguration, resolveWebConfiguration, nativeReplayEnabled, readProject, nativeConfigurationScript, configureNativeBuild };
|
|
@@ -29,8 +29,6 @@ import java.util.Map;
|
|
|
29
29
|
|
|
30
30
|
/** Cocos reflection entry point. All calls and responses are JSON envelopes. */
|
|
31
31
|
public final class FTCocosBridge {
|
|
32
|
-
private static final String COCOS_SDK_VERSION_KEY = "sdk_package_cocos";
|
|
33
|
-
|
|
34
32
|
private FTCocosBridge() {
|
|
35
33
|
}
|
|
36
34
|
|
|
@@ -61,7 +59,7 @@ public final class FTCocosBridge {
|
|
|
61
59
|
private static Object dispatch(String method, JSONObject payload) throws Exception {
|
|
62
60
|
switch (method) {
|
|
63
61
|
case "hybrid.attach":
|
|
64
|
-
|
|
62
|
+
ensureNativeHostInitialized();
|
|
65
63
|
return null;
|
|
66
64
|
case "sdk.configure":
|
|
67
65
|
configureSdk(payload);
|
|
@@ -130,13 +128,6 @@ public final class FTCocosBridge {
|
|
|
130
128
|
}
|
|
131
129
|
}
|
|
132
130
|
|
|
133
|
-
private static void attachHybrid(JSONObject json) throws Exception {
|
|
134
|
-
ensureNativeHostInitialized();
|
|
135
|
-
if (hasText(json, "sdkVersion")) {
|
|
136
|
-
FTSdk.appendGlobalContext(COCOS_SDK_VERSION_KEY, json.getString("sdkVersion"));
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
131
|
private static void ensureNativeHostInitialized() {
|
|
141
132
|
if (FTSdk.get() == null) {
|
|
142
133
|
throw new IllegalStateException(
|
|
@@ -156,6 +147,10 @@ public final class FTCocosBridge {
|
|
|
156
147
|
if (json.has("debug")) config.setDebug(json.getBoolean("debug"));
|
|
157
148
|
if (hasText(json, "env")) config.setEnv(json.getString("env"));
|
|
158
149
|
if (hasText(json, "serviceName")) config.setServiceName(json.getString("serviceName"));
|
|
150
|
+
if (json.has("allowWebViewHost")) {
|
|
151
|
+
config.setAllowWebViewHost(json.isNull("allowWebViewHost")
|
|
152
|
+
? null : stringArray(json.getJSONArray("allowWebViewHost")));
|
|
153
|
+
}
|
|
159
154
|
addStringContext(json.optJSONObject("globalContext"), new StringContextSetter() {
|
|
160
155
|
@Override public void set(String key, String value) { config.addGlobalContext(key, value); }
|
|
161
156
|
});
|
|
@@ -187,6 +182,7 @@ public final class FTCocosBridge {
|
|
|
187
182
|
if (json.has("enableNativeUserAction")) config.setEnableTraceUserAction(json.getBoolean("enableNativeUserAction"));
|
|
188
183
|
if (json.has("enableNativeUserView")) config.setEnableTraceUserView(json.getBoolean("enableNativeUserView"));
|
|
189
184
|
if (json.has("enableNativeUserResource")) config.setEnableTraceUserResource(json.getBoolean("enableNativeUserResource"));
|
|
185
|
+
if (json.has("enableTraceWebView")) config.setEnableTraceWebView(json.getBoolean("enableTraceWebView"));
|
|
190
186
|
if (json.has("enableNativeCrash")) config.setEnableTrackAppCrash(json.getBoolean("enableNativeCrash"));
|
|
191
187
|
if (json.has("enableNativeAnr")) config.setEnableTrackAppANR(json.getBoolean("enableNativeAnr"));
|
|
192
188
|
if (json.has("enableNativeUiBlock")) {
|
|
@@ -210,6 +206,7 @@ public final class FTCocosBridge {
|
|
|
210
206
|
else if (json.has("sampleRate")) config.setSamplingRate((float) json.getDouble("sampleRate"));
|
|
211
207
|
if (json.has("enableLinkRumData")) config.setEnableLinkRumData(json.getBoolean("enableLinkRumData"));
|
|
212
208
|
if (json.has("enableCustomLog")) config.setEnableCustomLog(json.getBoolean("enableCustomLog"));
|
|
209
|
+
if (json.has("enableWebViewLog")) config.setEnableWebViewLog(json.getBoolean("enableWebViewLog"));
|
|
213
210
|
if (json.has("printCustomLogToConsole")) config.setPrintCustomLogToConsole(json.getBoolean("printCustomLogToConsole"));
|
|
214
211
|
if (json.has("logCacheLimitCount")) config.setLogCacheLimitCount(json.getInt("logCacheLimitCount"));
|
|
215
212
|
if ("discardOldest".equals(json.optString("discardStrategy"))) config.setLogCacheDiscardStrategy(LogCacheDiscard.DISCARD_OLDEST);
|
|
@@ -32,10 +32,6 @@
|
|
|
32
32
|
FTExternalDataManager *rum = [FTExternalDataManager sharedManager];
|
|
33
33
|
if ([method isEqualToString:@"hybrid.attach"]) {
|
|
34
34
|
[self ensureNativeHostInitialized];
|
|
35
|
-
NSString *sdkVersion = [self text:arguments[@"sdkVersion"]];
|
|
36
|
-
if (sdkVersion.length > 0) {
|
|
37
|
-
[FTMobileAgent appendGlobalContext:@{ @"sdk_package_cocos": sdkVersion }];
|
|
38
|
-
}
|
|
39
35
|
return nil;
|
|
40
36
|
}
|
|
41
37
|
if ([method isEqualToString:@"sdk.configure"]) {
|
|
@@ -53,6 +49,10 @@
|
|
|
53
49
|
if (arguments[@"debug"]) config.enableSDKDebugLog = [arguments[@"debug"] boolValue];
|
|
54
50
|
if ([self text:arguments[@"env"]].length > 0) config.env = arguments[@"env"];
|
|
55
51
|
if ([self text:arguments[@"serviceName"]].length > 0) config.service = arguments[@"serviceName"];
|
|
52
|
+
if (arguments[@"allowWebViewHost"]) {
|
|
53
|
+
config.allowWebViewHost = arguments[@"allowWebViewHost"] == [NSNull null]
|
|
54
|
+
? nil : arguments[@"allowWebViewHost"];
|
|
55
|
+
}
|
|
56
56
|
if ([arguments[@"globalContext"] isKindOfClass:NSDictionary.class]) config.globalContext = arguments[@"globalContext"];
|
|
57
57
|
[FTMobileAgent startWithConfigOptions:config];
|
|
58
58
|
return nil;
|
|
@@ -90,6 +90,7 @@
|
|
|
90
90
|
if (arguments[@"enableNativeUserAction"]) config.enableTraceUserAction = [arguments[@"enableNativeUserAction"] boolValue];
|
|
91
91
|
if (arguments[@"enableNativeUserView"]) config.enableTraceUserView = [arguments[@"enableNativeUserView"] boolValue];
|
|
92
92
|
if (arguments[@"enableNativeUserResource"]) config.enableTraceUserResource = [arguments[@"enableNativeUserResource"] boolValue];
|
|
93
|
+
if (arguments[@"enableTraceWebView"]) config.enableTraceWebView = [arguments[@"enableTraceWebView"] boolValue];
|
|
93
94
|
if (arguments[@"enableNativeCrash"]) config.enableTrackAppCrash = [arguments[@"enableNativeCrash"] boolValue];
|
|
94
95
|
if (arguments[@"enableNativeAnr"]) config.enableTrackAppANR = [arguments[@"enableNativeAnr"] boolValue];
|
|
95
96
|
if (arguments[@"enableNativeUiBlock"]) {
|
|
@@ -157,6 +158,7 @@
|
|
|
157
158
|
}
|
|
158
159
|
if (arguments[@"enableLinkRumData"]) config.enableLinkRumData = [arguments[@"enableLinkRumData"] boolValue];
|
|
159
160
|
if (arguments[@"enableCustomLog"]) config.enableCustomLog = [arguments[@"enableCustomLog"] boolValue];
|
|
161
|
+
if (arguments[@"enableWebViewLog"]) config.enableWebViewLog = [arguments[@"enableWebViewLog"] boolValue];
|
|
160
162
|
if (arguments[@"printCustomLogToConsole"]) config.printCustomLogToConsole = [arguments[@"printCustomLogToConsole"] boolValue];
|
|
161
163
|
if (arguments[@"logCacheLimitCount"]) config.logCacheLimitCount = [arguments[@"logCacheLimitCount"] intValue];
|
|
162
164
|
config.discardType = [[self text:arguments[@"discardStrategy"]] isEqualToString:@"discardOldest"] ? FTDiscardOldest : FTDiscard;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Pod::Spec.new do |s|
|
|
2
2
|
s.name = 'FTCocosBridge'
|
|
3
|
-
s.version = '0.1.1-alpha.
|
|
3
|
+
s.version = '0.1.1-alpha.3'
|
|
4
4
|
s.summary = 'CloudCare Mobile SDK native bridge for Cocos Creator.'
|
|
5
5
|
s.homepage = 'https://github.com/GuanceCloud/datakit-cocos'
|
|
6
6
|
s.license = { :type => 'Apache-2.0' }
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
(function() {
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __commonJS = function(cb, mod) {
|
|
5
|
+
return function __require() {
|
|
6
|
+
try {
|
|
7
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
8
|
+
} catch (e) {
|
|
9
|
+
throw mod = 0, e;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
// packages/cocos/dist/creator2/core/version.js
|
|
15
|
+
var require_version = __commonJS({
|
|
16
|
+
"packages/cocos/dist/creator2/core/version.js": function(exports) {
|
|
17
|
+
"use strict";
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.FT_COCOS_SDK_BRIDGE_INFO = exports.FT_COCOS_SDK_BRIDGE_INFO_KEY = exports.FT_COCOS_SDK_VERSION = void 0;
|
|
20
|
+
exports.FT_COCOS_SDK_VERSION = "0.1.1-alpha.3";
|
|
21
|
+
exports.FT_COCOS_SDK_BRIDGE_INFO_KEY = "sdk_bridge_info";
|
|
22
|
+
exports.FT_COCOS_SDK_BRIDGE_INFO = JSON.stringify({
|
|
23
|
+
cocos: exports.FT_COCOS_SDK_VERSION
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
// packages/cocos/dist/creator2/core/platform-runtime.js
|
|
29
|
+
var require_platform_runtime = __commonJS({
|
|
30
|
+
"packages/cocos/dist/creator2/core/platform-runtime.js": function(exports) {
|
|
31
|
+
"use strict";
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.platformGlobal = platformGlobal;
|
|
34
|
+
exports.existingPlatformImplementation = existingPlatformImplementation;
|
|
35
|
+
exports.platformImplementation = platformImplementation;
|
|
36
|
+
var version_js_1 = require_version();
|
|
37
|
+
function platformGlobal() {
|
|
38
|
+
return typeof window !== "undefined" ? window : globalThis;
|
|
39
|
+
}
|
|
40
|
+
function existingPlatformImplementation(context, target) {
|
|
41
|
+
var _a;
|
|
42
|
+
if (target === void 0) {
|
|
43
|
+
target = platformGlobal();
|
|
44
|
+
}
|
|
45
|
+
var previous = (_a = target.__FT_COCOS_INSTANCES__) === null || _a === void 0 ? void 0 : _a[context.engine + ":" + context.platform];
|
|
46
|
+
if (previous && previous.version !== version_js_1.FT_COCOS_SDK_VERSION)
|
|
47
|
+
throw new Error("Cocos SDK versions must match on the same page");
|
|
48
|
+
return previous === null || previous === void 0 ? void 0 : previous.sdk;
|
|
49
|
+
}
|
|
50
|
+
function platformImplementation(context, target, create) {
|
|
51
|
+
if (target === void 0) {
|
|
52
|
+
target = platformGlobal();
|
|
53
|
+
}
|
|
54
|
+
var key = context.engine + ":" + context.platform;
|
|
55
|
+
var instances = target.__FT_COCOS_INSTANCES__ || (target.__FT_COCOS_INSTANCES__ = {});
|
|
56
|
+
var previous = existingPlatformImplementation(context, target);
|
|
57
|
+
if (previous)
|
|
58
|
+
return previous;
|
|
59
|
+
var factory = context.platform === "web" ? target.__FT_COCOS_WEB_FACTORY__ : target.__FT_COCOS_NATIVE_FACTORY__;
|
|
60
|
+
if (!create && (!factory || factory.protocol !== 1 || factory.version !== version_js_1.FT_COCOS_SDK_VERSION)) {
|
|
61
|
+
throw new Error(context.platform === "web" ? "Cocos Web runtime is missing or incompatible. Run the installer with --web and rebuild, or load /web/bootstrap before game scripts." : "Cocos native runtime is missing or incompatible. Rerun the SDK installer and rebuild the project.");
|
|
62
|
+
}
|
|
63
|
+
var sdk = create ? create() : factory.create(context, target);
|
|
64
|
+
instances[key] = { version: version_js_1.FT_COCOS_SDK_VERSION, sdk: sdk };
|
|
65
|
+
return sdk;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
// packages/cocos/dist/creator2/core/observation.js
|
|
71
|
+
var require_observation = __commonJS({
|
|
72
|
+
"packages/cocos/dist/creator2/core/observation.js": function(exports) {
|
|
73
|
+
"use strict";
|
|
74
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
75
|
+
exports.FTObservationQueue = void 0;
|
|
76
|
+
exports.observationState = observationState;
|
|
77
|
+
function observationState(target) {
|
|
78
|
+
return target.__FT_COCOS_OBSERVATION_STATE__ || (target.__FT_COCOS_OBSERVATION_STATE__ = { reporting: 0 });
|
|
79
|
+
}
|
|
80
|
+
var FTObservationQueue = (
|
|
81
|
+
/** @class */
|
|
82
|
+
(function() {
|
|
83
|
+
function FTObservationQueue2(target) {
|
|
84
|
+
this.target = target;
|
|
85
|
+
this.pending = [];
|
|
86
|
+
this.size = 0;
|
|
87
|
+
this.generation = 0;
|
|
88
|
+
this.dropped = 0;
|
|
89
|
+
this.state = observationState(target);
|
|
90
|
+
}
|
|
91
|
+
FTObservationQueue2.prototype.enqueue = function(run, size) {
|
|
92
|
+
var _this = this;
|
|
93
|
+
if (size === void 0) {
|
|
94
|
+
size = 0;
|
|
95
|
+
}
|
|
96
|
+
if (this.state.reporting)
|
|
97
|
+
return false;
|
|
98
|
+
if (this.pending.length >= 128 || this.size + size > 1024 * 1024) {
|
|
99
|
+
this.dropped++;
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
this.pending.push({ run: run, size: size });
|
|
103
|
+
this.size += size;
|
|
104
|
+
if (this.timer !== void 0)
|
|
105
|
+
return true;
|
|
106
|
+
var generation = this.generation;
|
|
107
|
+
try {
|
|
108
|
+
var schedule = this.target.setTimeout || (typeof setTimeout === "function" ? setTimeout : void 0);
|
|
109
|
+
var cancel = this.target.clearTimeout || (typeof clearTimeout === "function" ? clearTimeout : void 0);
|
|
110
|
+
if (!schedule) {
|
|
111
|
+
this.dropped += this.pending.length;
|
|
112
|
+
this.pending = [];
|
|
113
|
+
this.size = 0;
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
this.cancel = cancel === null || cancel === void 0 ? void 0 : cancel.bind(this.target);
|
|
117
|
+
this.timer = schedule.call(this.target, function() {
|
|
118
|
+
_this.timer = void 0;
|
|
119
|
+
if (generation !== _this.generation)
|
|
120
|
+
return;
|
|
121
|
+
var batch = _this.pending;
|
|
122
|
+
_this.pending = [];
|
|
123
|
+
_this.size = 0;
|
|
124
|
+
_this.state.reporting++;
|
|
125
|
+
try {
|
|
126
|
+
for (var _i = 0, batch_1 = batch; _i < batch_1.length; _i++) {
|
|
127
|
+
var task = batch_1[_i];
|
|
128
|
+
if (generation !== _this.generation)
|
|
129
|
+
break;
|
|
130
|
+
try {
|
|
131
|
+
task.run();
|
|
132
|
+
} catch (_a) {
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
} finally {
|
|
136
|
+
_this.state.reporting--;
|
|
137
|
+
}
|
|
138
|
+
}, 0);
|
|
139
|
+
return true;
|
|
140
|
+
} catch (_a) {
|
|
141
|
+
this.dropped += this.pending.length;
|
|
142
|
+
this.pending = [];
|
|
143
|
+
this.size = 0;
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
FTObservationQueue2.prototype.stop = function() {
|
|
148
|
+
var _a;
|
|
149
|
+
this.generation++;
|
|
150
|
+
this.pending = [];
|
|
151
|
+
this.size = 0;
|
|
152
|
+
if (this.timer !== void 0) {
|
|
153
|
+
try {
|
|
154
|
+
(_a = this.cancel) === null || _a === void 0 ? void 0 : _a.call(this, this.timer);
|
|
155
|
+
} catch (_b) {
|
|
156
|
+
}
|
|
157
|
+
this.timer = void 0;
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
return FTObservationQueue2;
|
|
161
|
+
})()
|
|
162
|
+
);
|
|
163
|
+
exports.FTObservationQueue = FTObservationQueue;
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
// packages/cocos/dist/creator2/native/jsb-errors.js
|
|
168
|
+
var require_jsb_errors = __commonJS({
|
|
169
|
+
"packages/cocos/dist/creator2/native/jsb-errors.js": function(exports) {
|
|
170
|
+
"use strict";
|
|
171
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
172
|
+
exports.installJsbErrorSource = installJsbErrorSource;
|
|
173
|
+
var observation_js_1 = require_observation();
|
|
174
|
+
function installJsbErrorSource(target) {
|
|
175
|
+
var jsb = target.jsb;
|
|
176
|
+
if (!(jsb === null || jsb === void 0 ? void 0 : jsb.onError) || target.__FT_COCOS_JSB_ERRORS__)
|
|
177
|
+
return;
|
|
178
|
+
var register = jsb.onError;
|
|
179
|
+
var handler;
|
|
180
|
+
var state = (0, observation_js_1.observationState)(target);
|
|
181
|
+
var observing = 0;
|
|
182
|
+
var subscribers = [];
|
|
183
|
+
var dispatch = function(location, message, stack) {
|
|
184
|
+
var _a;
|
|
185
|
+
var observations = [];
|
|
186
|
+
try {
|
|
187
|
+
if (!state.reporting && !observing) {
|
|
188
|
+
observing++;
|
|
189
|
+
try {
|
|
190
|
+
var timestampMs = Date.now();
|
|
191
|
+
for (var _i = 0, _b = subscribers.slice(); _i < _b.length; _i++) {
|
|
192
|
+
var subscriber = _b[_i];
|
|
193
|
+
try {
|
|
194
|
+
observations.push({ subscriber: subscriber, observation: { timestampMs: timestampMs, context: (_a = subscriber.captureContext) === null || _a === void 0 ? void 0 : _a.call(subscriber) } });
|
|
195
|
+
} catch (_c) {
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
} finally {
|
|
199
|
+
observing--;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
} catch (_d) {
|
|
203
|
+
}
|
|
204
|
+
try {
|
|
205
|
+
return handler === null || handler === void 0 ? void 0 : handler.call(this, location, message, stack);
|
|
206
|
+
} finally {
|
|
207
|
+
for (var _e = 0, observations_1 = observations; _e < observations_1.length; _e++) {
|
|
208
|
+
var _f = observations_1[_e], subscriber = _f.subscriber, observation = _f.observation;
|
|
209
|
+
if (!subscriber.active)
|
|
210
|
+
continue;
|
|
211
|
+
observing++;
|
|
212
|
+
try {
|
|
213
|
+
subscriber.callback(location, message, stack, observation);
|
|
214
|
+
} catch (_g) {
|
|
215
|
+
} finally {
|
|
216
|
+
observing--;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
jsb.onError = function() {
|
|
222
|
+
var args = [];
|
|
223
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
224
|
+
args[_i] = arguments[_i];
|
|
225
|
+
}
|
|
226
|
+
if (args.length !== 1 || typeof args[0] !== "function")
|
|
227
|
+
return register.apply(this, args);
|
|
228
|
+
var callback = args[0];
|
|
229
|
+
var result = register.call(this, subscribers.length ? dispatch : callback);
|
|
230
|
+
handler = callback;
|
|
231
|
+
return result;
|
|
232
|
+
};
|
|
233
|
+
target.__FT_COCOS_JSB_ERRORS__ = {
|
|
234
|
+
protocol: 2,
|
|
235
|
+
subscribe: function(callback, captureContext) {
|
|
236
|
+
if (subscribers.length === 0)
|
|
237
|
+
register.call(jsb, dispatch);
|
|
238
|
+
var subscriber = { callback: callback, captureContext: captureContext, active: true };
|
|
239
|
+
subscribers.push(subscriber);
|
|
240
|
+
return function() {
|
|
241
|
+
if (!subscriber.active)
|
|
242
|
+
return;
|
|
243
|
+
subscriber.active = false;
|
|
244
|
+
var index = subscribers.indexOf(subscriber);
|
|
245
|
+
if (index >= 0)
|
|
246
|
+
subscribers.splice(index, 1);
|
|
247
|
+
if (subscribers.length === 0 && handler)
|
|
248
|
+
register.call(jsb, handler);
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
// packages/cocos/dist/creator2/native/error-bootstrap.js
|
|
257
|
+
var require_error_bootstrap = __commonJS({
|
|
258
|
+
"packages/cocos/dist/creator2/native/error-bootstrap.js": function(exports) {
|
|
259
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
260
|
+
var platform_runtime_js_1 = require_platform_runtime();
|
|
261
|
+
var jsb_errors_js_1 = require_jsb_errors();
|
|
262
|
+
(0, jsb_errors_js_1.installJsbErrorSource)((0, platform_runtime_js_1.platformGlobal)());
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
require_error_bootstrap();
|
|
266
|
+
})();
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudcare/cocos-sdk",
|
|
3
|
-
"version": "0.1.1-alpha.
|
|
4
|
-
"description": "Observability SDK integration for Cocos Creator 2.4 and 3.x",
|
|
3
|
+
"version": "0.1.1-alpha.3",
|
|
4
|
+
"description": "Observability SDK integration for Cocos Creator 2.4 and 3.x on Android, iOS, and Web",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Guance Cloud",
|
|
7
7
|
"repository": {
|
|
@@ -36,6 +36,20 @@
|
|
|
36
36
|
"import": "./dist/creator3/core/plugin-api.js",
|
|
37
37
|
"require": "./dist/creator2/core/plugin-api.js",
|
|
38
38
|
"default": "./dist/creator2/core/plugin-api.js"
|
|
39
|
+
},
|
|
40
|
+
"./web/creator2": {
|
|
41
|
+
"types": "./dist/creator2/web/creator2.d.ts",
|
|
42
|
+
"default": "./dist/creator2/web/creator2.js"
|
|
43
|
+
},
|
|
44
|
+
"./web/creator3": {
|
|
45
|
+
"types": "./dist/creator3/web/creator3.d.ts",
|
|
46
|
+
"default": "./dist/creator3/web/creator3.js"
|
|
47
|
+
},
|
|
48
|
+
"./web/bootstrap": {
|
|
49
|
+
"types": "./dist/creator2/web/bootstrap.d.ts",
|
|
50
|
+
"import": "./dist/creator3/web/bootstrap.js",
|
|
51
|
+
"require": "./dist/creator2/web/bootstrap.js",
|
|
52
|
+
"default": "./dist/creator2/web/bootstrap.js"
|
|
39
53
|
}
|
|
40
54
|
},
|
|
41
55
|
"files": [
|
|
@@ -48,7 +62,9 @@
|
|
|
48
62
|
"README.md",
|
|
49
63
|
"LICENSE",
|
|
50
64
|
"THIRD_PARTY_NOTICES",
|
|
51
|
-
"plugin-api"
|
|
65
|
+
"plugin-api",
|
|
66
|
+
"web",
|
|
67
|
+
"runtime"
|
|
52
68
|
],
|
|
53
69
|
"bin": {
|
|
54
70
|
"guance-cocos": "bin/cli.cjs"
|