瀏覽代碼

增加legacy 模块

gemercheung 3 年之前
父節點
當前提交
ba576c1a16

+ 4 - 4
package.json

@@ -9,7 +9,7 @@
     ],
     "scripts": {
         "docs": "doctoc --title '**Table of content**' README.md",
-        "dev":"pnpm -C play dev",
+        "dev": "pnpm -C play dev",
         "clean": "pnpm run -r clean",
         "build": "pnpm run -r build",
         "test": "pnpm run -r test",
@@ -17,9 +17,9 @@
         "publish": "pnpm publish --filter @medici/core @medici/web @medici/types @medici/utils"
     },
     "devDependencies": {
-        "@changesets/cli": "^2.23.2",
-        "@typescript-eslint/eslint-plugin": "^5.30.6",
-        "@typescript-eslint/parser": "^5.30.6",
+        "@changesets/cli": "^2.24.3",
+        "@typescript-eslint/eslint-plugin": "^5.33.0",
+        "@typescript-eslint/parser": "^5.33.0",
         "doctoc": "~2.2.0",
         "eslint": "~8.19.0",
         "eslint-config-prettier": "^8.5.0",

+ 5 - 4
packages/core/package.json

@@ -18,15 +18,16 @@
     "prepublishOnly": "pnpm run build"
   },
   "dependencies": {
-    "@medici/types": "workspace:^0.0.1",
-    "@medici/utils": "workspace:^0.0.1",
+    "@medici/types": "workspace:^0.0.3",
+    "@medici/utils": "workspace:^0.0.3",
     "rxjs": "^7.5.6",
     "uuidv4": "^6.2.13"
   },
   "devDependencies": {
-    "@rollup/plugin-typescript": "~8.3.0",
+    "@rollup/plugin-typescript": "~8.3.4",
     "rimraf": "~3.0.2",
-    "rollup": "~2.77.0",
+    "rollup": "~2.77.3",
+    "tslib": "^2.4.0",
     "rollup-plugin-terser": "^7.0.2",
     "typescript": "~4.7.4"
   }

+ 8 - 8
packages/core/src/basicTrack.ts

@@ -39,7 +39,7 @@ export class BaseTrack implements IBaseAction, ICustomAction {
         return collect(this._endPoint, 'event', payload);
     }
 
-    public sendEvent(value: string, type: string, url?: string, uuid?: string): void {
+    public sendEvent(value: string, type: string, url?: string, uuid?: string): Promise<XMLHttpRequestResponseType> {
         console.log('BaseTrack-sendEvent', value, type, url, uuid);
         const payload = Object.assign(this._history.playload, {
             referrer: this._history.currentRef,
@@ -47,35 +47,35 @@ export class BaseTrack implements IBaseAction, ICustomAction {
             event_data: value,
             ...this._config,
         });
-        collect(this._endPoint, 'event', payload);
+        return collect(this._endPoint, 'event', payload);
     }
 
-    public track(trackActionName: string, trackActionOption?: TrackActionOption): void {
+    public track(trackActionName: string, trackActionOption?: TrackActionOption): Promise<XMLHttpRequestResponseType> {
         const payload = Object.assign(this._history.playload, {
             referrer: this._history.currentRef,
             ...trackActionOption,
             trackActionName,
             ...this._config,
         });
-        collect(this._trackEndPoint, 'track', payload);
+        return collect(this._trackEndPoint, 'track', payload);
     }
 
-    public startTrack(trackActionName: string, trackActionOption?: TrackActionOption): void {
+    public startTrack(trackActionName: string, trackActionOption?: TrackActionOption): Promise<XMLHttpRequestResponseType> {
         const payload = Object.assign(this._history.playload, {
             referrer: this._history.currentRef,
             ...trackActionOption,
             trackActionName,
             ...this._config,
         });
-        collect(this._trackEndPoint, 'startTrack', payload);
         if (trackActionOption.maxWaitTime) {
             this._timeOut = setTimeout(() => {
                 this.endTrack(trackActionName, trackActionOption);
             }, trackActionOption.maxWaitTime);
         }
+        return collect(this._trackEndPoint, 'startTrack', payload);
     }
 
-    public endTrack(trackActionName: string, trackActionOption?: TrackActionOption): void {
+    public endTrack(trackActionName: string, trackActionOption?: TrackActionOption): Promise<XMLHttpRequestResponseType> {
         clearTimeout(this._timeOut);
         const payload = Object.assign(this._history.playload, {
             referrer: this._history.currentRef,
@@ -83,6 +83,6 @@ export class BaseTrack implements IBaseAction, ICustomAction {
             trackActionName,
             ...this._config,
         });
-        collect(this._trackEndPoint, 'endTrack', payload);
+        return collect(this._trackEndPoint, 'endTrack', payload);
     }
 }

+ 1 - 0
packages/core/src/node.ts

@@ -0,0 +1 @@
+// import { EventReturnType, IBaseAction, ICustomAction } from '@medici/types';

+ 2 - 0
packages/legacy/README.md

@@ -0,0 +1,2 @@
+# Legacy
+Umd 版本

+ 33 - 0
packages/legacy/package.json

@@ -0,0 +1,33 @@
+{
+  "name": "@medici/legacy",
+  "version": "0.0.4",
+  "main": "dist/index",
+  "types": "dist/index",
+  "files": [
+    "dist"
+  ],
+  "author": {
+    "name": "gemercheung",
+    "email": "gemercheung@gmail.com",
+    "url": "http://gemer.xyz/"
+  },
+  "scripts": {
+    "build": "pnpm run clean && pnpm run compile",
+    "clean": "rimraf -rf ./dist",
+    "compile": "rollup -c",
+    "prepublishOnly": "pnpm run build"
+  },
+  "devDependencies": {
+    "@rollup/plugin-commonjs": "^22.0.1",
+    "@rollup/plugin-node-resolve": "^13.3.0",
+    "@rollup/plugin-typescript": "~8.3.4",
+    "rimraf": "~3.0.2",
+    "rollup": "~2.77.3",
+    "rollup-plugin-terser": "^7.0.2",
+    "tslib": "^2.4.0",
+    "typescript": "~4.7.4"
+  },
+  "dependencies": {
+    "@medici/core": "^0.0.4"
+  }
+}

+ 46 - 0
packages/legacy/rollup.config.js

@@ -0,0 +1,46 @@
+import typescript from '@rollup/plugin-typescript';
+import { terser } from 'rollup-plugin-terser';
+// import pkg from './package.json';
+import resolve from '@rollup/plugin-node-resolve';
+import commonjs from '@rollup/plugin-commonjs';
+export default [
+    {
+        input: 'src/index.ts',
+        external: [],
+        // external: Object.keys(pkg.dependencies),
+        plugins: [
+            typescript({
+                tsconfig: './tsconfig.build.json',
+            }),
+            commonjs({
+                ignoreGlobal: false,
+                include: ['node_modules/**'],
+            }),
+            resolve({
+                browser: true,
+                jsnext: true,
+                main: true,
+                preferBuiltins: false,
+            }),
+            terser({
+                compress: {
+                    drop_console: true,
+                },
+            }),
+        ],
+        // optimization: {
+        //     splitChunks: { chunks: 'all' },
+        // },
+        output: [
+            {
+                globals: {
+                    '@medici/core': 'core',
+                },
+                format: 'iife',
+                name: 'Medici',
+                file: './dist/medici.js',
+                sourcemap: true,
+            },
+        ],
+    },
+];

+ 1 - 0
packages/legacy/src/index.ts

@@ -0,0 +1 @@
+export * from './init';

+ 9 - 0
packages/legacy/src/init.ts

@@ -0,0 +1,9 @@
+import { SDK, SDKConfigType } from '@medici/core';
+
+export const init = (initParams: SDKConfigType): SDK => {
+    const webParam: SDKConfigType = {
+        ...initParams,
+        platform: 'web',
+    };
+    return new SDK(webParam);
+};

+ 12 - 0
packages/legacy/tsconfig.build.json

@@ -0,0 +1,12 @@
+{
+  "extends": "../../tsconfig.build.json",
+
+  "compilerOptions": {
+    "target": "ES5",
+    "outDir": "./dist"
+  },
+
+  "include": [
+    "src/**/*"
+  ]
+}

+ 3 - 0
packages/legacy/tsconfig.json

@@ -0,0 +1,3 @@
+{
+  "extends": "../../tsconfig.json"
+}

+ 8 - 6
packages/types/src/event.ts

@@ -12,14 +12,16 @@ export interface TrackActionOption extends Dict<any> {
     eventType: string;
     maxWaitTime?: number;
 }
+
+export type EventReturnType = Promise<XMLHttpRequestResponseType>;
 export interface IBaseAction {
-    trackView(url: string, referrer: string, uuid: string): void;
-    trackEvent(event_name: string, event_data: string, url?: string, uuid?: string): void;
-    sendEvent(value: string, type: string, url?: string, uuid?: string): void;
+    trackView(url: string, referrer: string, uuid: string): EventReturnType;
+    trackEvent(event_name: string, event_data: string, url?: string, uuid?: string): EventReturnType;
+    sendEvent(value: string, type: string, url?: string, uuid?: string): EventReturnType;
 }
 
 export interface ICustomAction {
-    track(trackActionName: string, trackActionOption?: TrackActionOption): void;
-    startTrack(trackActionName: string, trackActionOption?: TrackActionOption): void;
-    endTrack(trackActionName: string, trackActionOption?: TrackActionOption): void;
+    track(trackActionName: string, trackActionOption?: TrackActionOption): EventReturnType;
+    startTrack(trackActionName: string, trackActionOption?: TrackActionOption): EventReturnType;
+    endTrack(trackActionName: string, trackActionOption?: TrackActionOption): EventReturnType;
 }

+ 1 - 1
packages/web/package.json

@@ -22,6 +22,6 @@
     "typescript": "~4.7.4"
   },
   "dependencies": {
-    "@medici/core": "workspace:^0.0.1"
+    "@medici/core": "workspace:^0.0.4"
   }
 }

+ 12 - 10
play/index.html

@@ -1,13 +1,15 @@
 <!DOCTYPE html>
 <html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Medici SDK</title>
-  </head>
-  <body>
-    <div id="app"></div>
-    <script type="module" src="/src/main.ts"></script>
-  </body>
+    <head>
+        <meta charset="UTF-8" />
+        <link rel="icon" type="image/svg+xml" href="/vite.svg" />
+        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+        <title>Medici SDK</title>
+      
+        <script async defer data-website-id="7b5958d5-1ae6-4ad5-8a87-5fc8a4b92999" src="https://allreally.oss-cn-shenzhen.aliyuncs.com/wasm/test_legacy/medici.js"></script>
+    </head>
+    <body>
+        <div id="app"></div>
+        <script type="module" src="/src/main.ts"></script>
+    </body>
 </html>

+ 7 - 7
play/package.json

@@ -10,16 +10,16 @@
   },
   "dependencies": {
     "@highlightjs/vue-plugin": "^2.1.0",
-    "@medici/core": "workspace:^0.0.1",
-    "@medici/web": "workspace:^0.0.1",
+    "@medici/core": "workspace:^0.0.4",
+    "@medici/web": "workspace:^0.0.4",
     "highlight.js": "^11.6.0",
     "vue": "^3.2.37",
-    "vue-router": "4"
+    "vue-router": "^4.1.3"
   },
   "devDependencies": {
-    "@vitejs/plugin-vue": "^3.0.0",
-    "typescript": "^4.6.4",
-    "vite": "^3.0.0",
-    "vue-tsc": "^0.38.4"
+    "@vitejs/plugin-vue": "^3.0.3",
+    "typescript": "^4.7.4",
+    "vite": "^3.0.7",
+    "vue-tsc": "^0.38.9"
   }
 }

+ 14 - 13
play/src/App.vue

@@ -2,20 +2,21 @@
 // This starter template is using Vue 3 <script setup> SFCs
 // Check out https://vuejs.org/api/sfc-script-setup.html#script-setup
 import HelloWorld from './components/HelloWorld.vue';
-import * as Medici from '@medici/web';
+// import * as Medici from '@medici/web';
+if ((window as any).Medici) {
+    const medici = (window as any).Medici.init({
+        platform: 'web',
+        appId: '7b5958d5-1ae6-4ad5-8a87-5fc8a4b92999',
+        endPoint: 'http://192.168.0.186:3000/api/collect', //服务器
+        trackEndPoint: 'http://192.168.0.186:3000/api/track',
+        config: {
+            user: 'testUser',
+            version: '1',
+        },
+    });
 
-const medici = Medici.init({
-    platform: 'web',
-    appId: '7b5958d5-1ae6-4ad5-8a87-5fc8a4b92999',
-    endPoint: 'http://192.168.0.186:3000/api/collect', //服务器
-    trackEndPoint: 'http://192.168.0.186:3000/api/track',
-    config: {
-        user: 'testUser',
-        version: '1',
-    },
-});
-console.log('medici', medici);
-(window as any).medici = medici;
+    (window as any).medici = medici;
+}
 
 // medici.track("BuyProduct", {
 //   eventType:"click",

文件差異過大導致無法顯示
+ 333 - 272
pnpm-lock.yaml