mp-weixin-back 0.0.5 → 0.0.7

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/build.config.ts CHANGED
@@ -8,5 +8,5 @@ export default defineBuildConfig({
8
8
  emitCJS: true,
9
9
  },
10
10
  failOnWarn: false,
11
- externals: ['vite', 'vue']
12
- })
11
+ externals: ['vite', 'vue', '@babel/generator'],
12
+ })
package/dist/index.cjs CHANGED
@@ -3,6 +3,7 @@
3
3
  const path = require('path');
4
4
  const fs = require('fs');
5
5
  const JSON5 = require('json5');
6
+ const kolorist = require('kolorist');
6
7
  const generate = require('@babel/generator');
7
8
  const compilerSfc = require('@vue/compiler-sfc');
8
9
  const astKit = require('ast-kit');
@@ -63,14 +64,17 @@ async function transformVueFile(code, id) {
63
64
  const callback = node.expression.arguments[0];
64
65
  const backArguments = node.expression.arguments[1];
65
66
  if (backArguments && backArguments.type == "ObjectExpression") {
66
- const config = new Function(`return (${generate__default(backArguments).code});`)();
67
+ const config = new Function(
68
+ // @ts-ignore
69
+ `return (${(generate__default.default ? generate__default.default : generate__default)(backArguments).code});`
70
+ )();
67
71
  pageBackConfig = { ...pageBackConfig, ...config };
68
72
  }
69
73
  if (callback && (callback.type === "ArrowFunctionExpression" || callback.type === "FunctionExpression")) {
70
74
  const body = callback.body;
71
75
  if (body.type === "BlockStatement") {
72
76
  body.body.forEach((statement) => {
73
- callbackCode += generate__default(statement).code;
77
+ callbackCode += (generate__default.default ? generate__default.default : generate__default)(statement).code;
74
78
  });
75
79
  }
76
80
  }
@@ -80,6 +84,7 @@ async function transformVueFile(code, id) {
80
84
  }
81
85
  if (!hasPageBack)
82
86
  return;
87
+ this.log.devLog(`\u9875\u9762${this.getPageById(id)}\u6CE8\u5165mp-weixin-back`);
83
88
  if (!pageBackConfig.preventDefault) {
84
89
  callbackCode += `uni.navigateBack({ delta: 1 });`;
85
90
  }
@@ -145,6 +150,19 @@ class pageContext {
145
150
  constructor(config) {
146
151
  __publicField(this, "config");
147
152
  __publicField(this, "pages", []);
153
+ __publicField(this, "log", {
154
+ info: (text) => {
155
+ console.log(kolorist.white(text));
156
+ },
157
+ error: (text) => {
158
+ console.log(kolorist.red(text));
159
+ },
160
+ devLog: (text) => {
161
+ if (this.config.mode === "development" && this.config.debug) {
162
+ console.log(kolorist.green(text));
163
+ }
164
+ }
165
+ });
148
166
  this.config = config;
149
167
  }
150
168
  getPagesJsonPath() {
@@ -168,16 +186,19 @@ class pageContext {
168
186
  this.pages.push(...mainPages);
169
187
  }
170
188
  if (subpackages) {
171
- const root = subpackages.root;
172
- const subPages = subpackages.pages.reduce((acc, current) => {
173
- acc.push(`${root}/${current.path}`.replace("//", "/"));
174
- return acc;
175
- }, []);
176
- this.pages.push(...subPages);
189
+ for (let i = 0; i < subpackages.length; i++) {
190
+ const element = subpackages[i];
191
+ const root = element.root;
192
+ const subPages = element.pages.reduce((acc, current) => {
193
+ acc.push(`${root}/${current.path}`.replace("//", "/"));
194
+ return acc;
195
+ }, []);
196
+ this.pages.push(...subPages);
197
+ }
177
198
  }
178
199
  } catch (error) {
179
- console.error("\u8BFB\u53D6pages.json\u6587\u4EF6\u5931\u8D25");
180
- console.error(error);
200
+ this.log.error("\u8BFB\u53D6pages.json\u6587\u4EF6\u5931\u8D25");
201
+ this.log.devLog(String(error));
181
202
  }
182
203
  }
183
204
  // 获取指定id的page
@@ -195,7 +216,8 @@ function MpBackPlugin(userOptions = {}) {
195
216
  let context;
196
217
  const defaultOptions = {
197
218
  preventDefault: false,
198
- frequency: 1
219
+ frequency: 1,
220
+ debug: false
199
221
  };
200
222
  const options = { ...defaultOptions, ...userOptions };
201
223
  return {
package/dist/index.d.cts CHANGED
@@ -10,6 +10,10 @@ type Config = {
10
10
  * 阻止次数,默认是 `1`
11
11
  */
12
12
  frequency: number;
13
+ /**
14
+ * 调试模式
15
+ */
16
+ debug: boolean;
13
17
  /**
14
18
  * 页面回退时触发
15
19
  */
package/dist/index.d.mts CHANGED
@@ -10,6 +10,10 @@ type Config = {
10
10
  * 阻止次数,默认是 `1`
11
11
  */
12
12
  frequency: number;
13
+ /**
14
+ * 调试模式
15
+ */
16
+ debug: boolean;
13
17
  /**
14
18
  * 页面回退时触发
15
19
  */
package/dist/index.d.ts CHANGED
@@ -10,6 +10,10 @@ type Config = {
10
10
  * 阻止次数,默认是 `1`
11
11
  */
12
12
  frequency: number;
13
+ /**
14
+ * 调试模式
15
+ */
16
+ debug: boolean;
13
17
  /**
14
18
  * 页面回退时触发
15
19
  */
package/dist/index.mjs CHANGED
@@ -1,6 +1,7 @@
1
1
  import path from 'path';
2
2
  import fs from 'fs';
3
3
  import JSON5 from 'json5';
4
+ import { white, red, green } from 'kolorist';
4
5
  import generate from '@babel/generator';
5
6
  import { parse } from '@vue/compiler-sfc';
6
7
  import { babelParse, walkAST } from 'ast-kit';
@@ -54,14 +55,17 @@ async function transformVueFile(code, id) {
54
55
  const callback = node.expression.arguments[0];
55
56
  const backArguments = node.expression.arguments[1];
56
57
  if (backArguments && backArguments.type == "ObjectExpression") {
57
- const config = new Function(`return (${generate(backArguments).code});`)();
58
+ const config = new Function(
59
+ // @ts-ignore
60
+ `return (${(generate.default ? generate.default : generate)(backArguments).code});`
61
+ )();
58
62
  pageBackConfig = { ...pageBackConfig, ...config };
59
63
  }
60
64
  if (callback && (callback.type === "ArrowFunctionExpression" || callback.type === "FunctionExpression")) {
61
65
  const body = callback.body;
62
66
  if (body.type === "BlockStatement") {
63
67
  body.body.forEach((statement) => {
64
- callbackCode += generate(statement).code;
68
+ callbackCode += (generate.default ? generate.default : generate)(statement).code;
65
69
  });
66
70
  }
67
71
  }
@@ -71,6 +75,7 @@ async function transformVueFile(code, id) {
71
75
  }
72
76
  if (!hasPageBack)
73
77
  return;
78
+ this.log.devLog(`\u9875\u9762${this.getPageById(id)}\u6CE8\u5165mp-weixin-back`);
74
79
  if (!pageBackConfig.preventDefault) {
75
80
  callbackCode += `uni.navigateBack({ delta: 1 });`;
76
81
  }
@@ -136,6 +141,19 @@ class pageContext {
136
141
  constructor(config) {
137
142
  __publicField(this, "config");
138
143
  __publicField(this, "pages", []);
144
+ __publicField(this, "log", {
145
+ info: (text) => {
146
+ console.log(white(text));
147
+ },
148
+ error: (text) => {
149
+ console.log(red(text));
150
+ },
151
+ devLog: (text) => {
152
+ if (this.config.mode === "development" && this.config.debug) {
153
+ console.log(green(text));
154
+ }
155
+ }
156
+ });
139
157
  this.config = config;
140
158
  }
141
159
  getPagesJsonPath() {
@@ -159,16 +177,19 @@ class pageContext {
159
177
  this.pages.push(...mainPages);
160
178
  }
161
179
  if (subpackages) {
162
- const root = subpackages.root;
163
- const subPages = subpackages.pages.reduce((acc, current) => {
164
- acc.push(`${root}/${current.path}`.replace("//", "/"));
165
- return acc;
166
- }, []);
167
- this.pages.push(...subPages);
180
+ for (let i = 0; i < subpackages.length; i++) {
181
+ const element = subpackages[i];
182
+ const root = element.root;
183
+ const subPages = element.pages.reduce((acc, current) => {
184
+ acc.push(`${root}/${current.path}`.replace("//", "/"));
185
+ return acc;
186
+ }, []);
187
+ this.pages.push(...subPages);
188
+ }
168
189
  }
169
190
  } catch (error) {
170
- console.error("\u8BFB\u53D6pages.json\u6587\u4EF6\u5931\u8D25");
171
- console.error(error);
191
+ this.log.error("\u8BFB\u53D6pages.json\u6587\u4EF6\u5931\u8D25");
192
+ this.log.devLog(String(error));
172
193
  }
173
194
  }
174
195
  // 获取指定id的page
@@ -186,7 +207,8 @@ function MpBackPlugin(userOptions = {}) {
186
207
  let context;
187
208
  const defaultOptions = {
188
209
  preventDefault: false,
189
- frequency: 1
210
+ frequency: 1,
211
+ debug: false
190
212
  };
191
213
  const options = { ...defaultOptions, ...userOptions };
192
214
  return {
package/package.json CHANGED
@@ -1,9 +1,11 @@
1
1
  {
2
2
  "name": "mp-weixin-back",
3
3
  "type": "module",
4
- "version": "0.0.5",
4
+ "version": "0.0.7",
5
5
  "description": "监听微信小程序的手势返回和页面默认导航栏的返回",
6
- "main": "./dist/index.ts",
6
+ "main": "dist/index.cjs",
7
+ "module": "dist/index.mjs",
8
+ "types": "./dist/index.d.ts",
7
9
  "scripts": {
8
10
  "build": "unbuild",
9
11
  "test": "vitest"
@@ -46,6 +48,7 @@
46
48
  "ast-kit": "^1.3.1",
47
49
  "happy-dom": "^15.11.6",
48
50
  "json5": "^2.2.3",
51
+ "kolorist": "^1.8.0",
49
52
  "typescript": "^5.7.2",
50
53
  "vitest": "^2.1.5"
51
54
  },
package/src/context.ts CHANGED
@@ -1,12 +1,26 @@
1
1
  import path from 'path'
2
2
  import fs from 'fs'
3
3
  import JSON5 from 'json5'
4
+ import { red, white, green } from 'kolorist'
4
5
  import { ContextConfig, PagesJson } from '../types'
5
6
  import { transformVueFile } from '../utils'
6
7
 
7
8
  export class pageContext {
8
9
  config: ContextConfig
9
10
  pages: string[] = []
11
+ log = {
12
+ info: (text: string) => {
13
+ console.log(white(text))
14
+ },
15
+ error: (text: string) => {
16
+ console.log(red(text))
17
+ },
18
+ devLog: (text: string) => {
19
+ if (this.config.mode === 'development' && this.config.debug) {
20
+ console.log(green(text))
21
+ }
22
+ },
23
+ }
10
24
 
11
25
  constructor(config: ContextConfig) {
12
26
  this.config = config
@@ -31,16 +45,19 @@ export class pageContext {
31
45
  this.pages.push(...mainPages)
32
46
  }
33
47
  if (subpackages) {
34
- const root = subpackages.root
35
- const subPages = subpackages.pages.reduce((acc: string[], current) => {
36
- acc.push(`${root}/${current.path}`.replace('//', '/'))
37
- return acc
38
- }, [])
39
- this.pages.push(...subPages)
48
+ for (let i = 0; i < subpackages.length; i++) {
49
+ const element = subpackages[i]
50
+ const root = element.root
51
+ const subPages = element.pages.reduce((acc: string[], current) => {
52
+ acc.push(`${root}/${current.path}`.replace('//', '/'))
53
+ return acc
54
+ }, [])
55
+ this.pages.push(...subPages)
56
+ }
40
57
  }
41
- } catch (error) {
42
- console.error('读取pages.json文件失败')
43
- console.error(error)
58
+ } catch (error: unknown) {
59
+ this.log.error('读取pages.json文件失败')
60
+ this.log.devLog(String(error))
44
61
  }
45
62
  }
46
63
  // 获取指定id的page
package/src/index.ts CHANGED
@@ -9,6 +9,7 @@ function MpBackPlugin(userOptions: UserOptions = {}): Plugin {
9
9
  const defaultOptions: Config = {
10
10
  preventDefault: false,
11
11
  frequency: 1,
12
+ debug: false,
12
13
  }
13
14
  const options = { ...defaultOptions, ...userOptions }
14
15
 
package/types/index.ts CHANGED
@@ -9,6 +9,10 @@ export type Config = {
9
9
  * 阻止次数,默认是 `1`
10
10
  */
11
11
  frequency: number
12
+ /**
13
+ * 调试模式
14
+ */
15
+ debug: boolean
12
16
  /**
13
17
  * 页面回退时触发
14
18
  */
@@ -31,5 +35,5 @@ type Pages = { path: string }[]
31
35
 
32
36
  export type PagesJson = {
33
37
  pages: Pages
34
- subpackages: { root: string; pages: Pages }
38
+ subpackages: { root: string; pages: Pages }[]
35
39
  }
package/utils/index.ts CHANGED
@@ -71,7 +71,10 @@ export async function transformVueFile(this: pageContext, code: string, id: stri
71
71
  const backArguments = node.expression.arguments[1]
72
72
  // 第二个参数为object才有效,覆盖插件传入的配置
73
73
  if (backArguments && backArguments.type == 'ObjectExpression') {
74
- const config = new Function(`return (${generate(backArguments).code});`)()
74
+ const config = new Function(
75
+ // @ts-ignore
76
+ `return (${(generate.default ? generate.default : generate)(backArguments).code});`
77
+ )()
75
78
  pageBackConfig = { ...pageBackConfig, ...config }
76
79
  }
77
80
 
@@ -83,7 +86,8 @@ export async function transformVueFile(this: pageContext, code: string, id: stri
83
86
  if (body.type === 'BlockStatement') {
84
87
  // 遍历 BlockStatement 的内容
85
88
  body.body.forEach((statement) => {
86
- callbackCode += generate(statement).code // 将 AST 节点生成代码
89
+ // @ts-ignore
90
+ callbackCode += (generate.default ? generate.default : generate)(statement).code // 将 AST 节点生成代码
87
91
  })
88
92
  }
89
93
  }
@@ -94,6 +98,8 @@ export async function transformVueFile(this: pageContext, code: string, id: stri
94
98
 
95
99
  if (!hasPageBack) return
96
100
 
101
+ this.log.devLog(`页面${this.getPageById(id)}注入mp-weixin-back`)
102
+
97
103
  // 不阻止默认行为就返回到上一层
98
104
  if (!pageBackConfig.preventDefault) {
99
105
  callbackCode += `uni.navigateBack({ delta: 1 });`
File without changes