12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- const {
- Router
- } = require('express');
- const {
- join
- } = require('path');
- let analyticsFileName = 'cocosAnalytics.min.2.2.1.js';
- const Paths = {
- sdkPath: join(__dirname, analyticsFileName),
- sdkURL: 'ccservices-scripts/' + analyticsFileName,
- };
- const appid = '623706372';
- const store = '';
- module.exports = {
- router: null,
- load() {
- this.hookPreviewServer();
- },
- unload() {
- this.unhookPreviewServer();
- },
- insertSDK(settings, url) {
- let newSettings = null;
- if (settings.match(/jsList/)) {
- newSettings = settings.replace(/,\s*jsList\s*:\s*\[/, '$&' + JSON.stringify(url) + ', ');
- } else {
- var str = ',\n\tjsList: [' + JSON.stringify(url) + '],\n\tlaunchScene:';
- newSettings = settings.replace(/,\s*launchScene\s*:/, str);
- }
- if (newSettings === settings) {
- Editor.warn('Failed to send My Awesome SDK to the web preview.');
- }
- return newSettings;
- },
- getSettings(req, res, next) {
- let sendVendor = res.send;
- res.send = (content) => {
- content = this.insertSDK(content, Paths.sdkURL);
- content = this.insertSDK(content, "ccservices-scripts/cocos-analytics-init.js");
- sendVendor.call(res, content);
- };
- next();
- },
- getSDK(req, res) {
- res.setHeader("Content-Type", "text/javascript");
- if (req.params[0] === "cocos-analytics-init.js") {
- var analyticsInit = `(function () {
- let runIdx = 1;
- let timer = setInterval(() => {
- if (typeof cocosAnalytics !== 'undefined') {
- clearInterval(timer);
- cocosAnalytics.init({appID: '${appid}', storeID: '${store}',engine: 'cocos', callNumber: ''});
- }
- }, 100);
- })();`;
- res.send(analyticsInit);
- } else
- res.sendFile(Paths.sdkPath);
- },
- hookPreviewServer() {
- if (this.router) {
- return;
- }
- this.router = Router();
- Editor.PreviewServer.userMiddlewares.push(this.router);
- this.router.get('/settings.js', this.getSettings.bind(this));
- this.router.get('/plugins/ccservices-scripts/*', this.getSDK.bind(this));
- this.router.get('/res/raw-ccservices-scripts/*', this.getSDK.bind(this));
- },
- unhookPreviewServer() {
- cc.js.array.remove(Editor.PreviewServer.userMiddlewares, this.router);
- this.router = null;
- },
- };
|