@msom/vue-query-preserve-v2 1.0.3 → 1.0.5

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/dist/index.js CHANGED
@@ -1,50 +1,51 @@
1
- function createQueryPreservePlugin(options = {}) {
1
+ const init = (router, options = {}) => {
2
2
  const { preserveKeys = [], beforeNavigate } = options;
3
- return {
4
- install(Vue) {
5
- const hanle = (router) => {
6
- router.beforeEach((to, from, next) => {
7
- if (beforeNavigate) {
8
- const result = beforeNavigate(to, from);
9
- if (result === false) {
10
- return next(false);
11
- }
12
- }
13
- const preserved = {};
14
- if (preserveKeys.length > 0 && from.query) {
15
- preserveKeys.forEach((key) => {
16
- if (from.query[key] !== void 0) {
17
- preserved[key] = from.query[key];
18
- }
19
- });
20
- }
21
- if (Object.keys(preserved).length > 0) {
22
- const hasPreservedParams = preserveKeys.some(
23
- (key) => to.query[key] === void 0
24
- );
25
- if (hasPreservedParams) {
26
- return next({
27
- ...to,
28
- query: {
29
- ...preserved,
30
- ...to.query
31
- }
32
- });
33
- }
3
+ router.beforeEach((to, from, next) => {
4
+ if (beforeNavigate) {
5
+ const result = beforeNavigate(to, from);
6
+ if (result === false) {
7
+ return next(false);
8
+ }
9
+ }
10
+ const preserved = {};
11
+ if (preserveKeys.length > 0 && from.query) {
12
+ preserveKeys.forEach((key) => {
13
+ if (from.query[key] !== void 0) {
14
+ preserved[key] = from.query[key];
15
+ }
16
+ });
17
+ }
18
+ if (Object.keys(preserved).length > 0) {
19
+ const hasPreservedParams = preserveKeys.some(
20
+ (key) => to.query[key] === void 0
21
+ );
22
+ if (hasPreservedParams) {
23
+ return next({
24
+ ...to,
25
+ query: {
26
+ ...preserved,
27
+ ...to.query
34
28
  }
35
- next();
36
29
  });
37
- };
30
+ }
31
+ }
32
+ next();
33
+ });
34
+ };
35
+ function createQueryPreservePlugin(options = {}) {
36
+ return {
37
+ install(Vue) {
38
38
  const _ = () => {
39
39
  try {
40
40
  const router = Vue.prototype.$router;
41
- hanle(router);
41
+ init(router, options);
42
42
  } catch {
43
43
  }
44
44
  requestAnimationFrame(_);
45
45
  };
46
46
  _();
47
- }
47
+ },
48
+ init
48
49
  };
49
50
  }
50
51
  export {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["/**\n * Vue 2 版本插件 - 路由查询参数保留插件\n * 适配 Vue 2.x + vue-router@3\n */\n\nexport interface QueryPreserveOptions {\n /**\n * 需要保留的查询参数键名白名单\n */\n preserveKeys?: string[];\n /**\n * 跳转前的自定义钩子函数\n * @param to 目标路由对象\n * @param from 来源路由对象\n * @returns 返回 false 可阻止跳转\n */\n beforeNavigate?: (to: any, from: any) => boolean | void;\n}\n\n/**\n * Vue 2 版本的路由查询参数保留插件\n * @param options 插件配置选项\n */\nfunction createQueryPreservePlugin(options: QueryPreserveOptions = {}) {\n const { preserveKeys = [], beforeNavigate } = options;\n\n return {\n install(Vue: any) {\n const hanle = (router: any) => {\n router.beforeEach((to: any, from: any, next: any) => {\n // 如果配置了 beforeNavigate 钩子,执行它\n if (beforeNavigate) {\n const result = beforeNavigate(to, from);\n if (result === false) {\n return next(false);\n }\n }\n\n // 从来源路由中提取需要保留的参数\n const preserved: Record<string, string> = {};\n if (preserveKeys.length > 0 && from.query) {\n preserveKeys.forEach((key) => {\n if (from.query[key] !== undefined) {\n preserved[key] = from.query[key] as string;\n }\n });\n }\n\n // 如果有需要保留的参数,且目标路由没有这些参数,则合并\n if (Object.keys(preserved).length > 0) {\n const hasPreservedParams = preserveKeys.some(\n (key) => to.query[key] === undefined,\n );\n if (hasPreservedParams) {\n return next({\n ...to,\n query: {\n ...preserved,\n ...to.query,\n },\n });\n }\n }\n\n next();\n });\n };\n const _ = () => {\n try {\n // 等待路由实例初始化完成\n const router = Vue.prototype.$router;\n hanle(router);\n } catch {}\n requestAnimationFrame(_);\n };\n _();\n },\n };\n}\n\nexport default createQueryPreservePlugin;\n"],"names":[],"mappings":"AAuBA,SAAS,0BAA0B,UAAgC,IAAI;AACrE,QAAM,EAAE,eAAe,IAAI,mBAAmB;AAE9C,SAAO;AAAA,IACL,QAAQ,KAAU;AAChB,YAAM,QAAQ,CAAC,WAAgB;AAC7B,eAAO,WAAW,CAAC,IAAS,MAAW,SAAc;AAEnD,cAAI,gBAAgB;AAClB,kBAAM,SAAS,eAAe,IAAI,IAAI;AACtC,gBAAI,WAAW,OAAO;AACpB,qBAAO,KAAK,KAAK;AAAA,YACnB;AAAA,UACF;AAGA,gBAAM,YAAoC,CAAA;AAC1C,cAAI,aAAa,SAAS,KAAK,KAAK,OAAO;AACzC,yBAAa,QAAQ,CAAC,QAAQ;AAC5B,kBAAI,KAAK,MAAM,GAAG,MAAM,QAAW;AACjC,0BAAU,GAAG,IAAI,KAAK,MAAM,GAAG;AAAA,cACjC;AAAA,YACF,CAAC;AAAA,UACH;AAGA,cAAI,OAAO,KAAK,SAAS,EAAE,SAAS,GAAG;AACrC,kBAAM,qBAAqB,aAAa;AAAA,cACtC,CAAC,QAAQ,GAAG,MAAM,GAAG,MAAM;AAAA,YAAA;AAE7B,gBAAI,oBAAoB;AACtB,qBAAO,KAAK;AAAA,gBACV,GAAG;AAAA,gBACH,OAAO;AAAA,kBACL,GAAG;AAAA,kBACH,GAAG,GAAG;AAAA,gBAAA;AAAA,cACR,CACD;AAAA,YACH;AAAA,UACF;AAEA,eAAA;AAAA,QACF,CAAC;AAAA,MACH;AACA,YAAM,IAAI,MAAM;AACd,YAAI;AAEF,gBAAM,SAAS,IAAI,UAAU;AAC7B,gBAAM,MAAM;AAAA,QACd,QAAQ;AAAA,QAAC;AACT,8BAAsB,CAAC;AAAA,MACzB;AACA,QAAA;AAAA,IACF;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["/**\n * Vue 2 版本插件 - 路由查询参数保留插件\n * 适配 Vue 2.x + vue-router@3\n */\n\nexport interface QueryPreserveOptions {\n /**\n * 需要保留的查询参数键名白名单\n */\n preserveKeys?: string[];\n /**\n * 跳转前的自定义钩子函数\n * @param to 目标路由对象\n * @param from 来源路由对象\n * @returns 返回 false 可阻止跳转\n */\n beforeNavigate?: (to: any, from: any) => boolean | void;\n}\n\nconst init = (router: any, options: QueryPreserveOptions = {}) => {\n const { preserveKeys = [], beforeNavigate } = options;\n router.beforeEach((to: any, from: any, next: any) => {\n // 如果配置了 beforeNavigate 钩子,执行它\n if (beforeNavigate) {\n const result = beforeNavigate(to, from);\n if (result === false) {\n return next(false);\n }\n }\n\n // 从来源路由中提取需要保留的参数\n const preserved: Record<string, string> = {};\n if (preserveKeys.length > 0 && from.query) {\n preserveKeys.forEach((key) => {\n if (from.query[key] !== undefined) {\n preserved[key] = from.query[key] as string;\n }\n });\n }\n\n // 如果有需要保留的参数,且目标路由没有这些参数,则合并\n if (Object.keys(preserved).length > 0) {\n const hasPreservedParams = preserveKeys.some(\n (key) => to.query[key] === undefined,\n );\n if (hasPreservedParams) {\n return next({\n ...to,\n query: {\n ...preserved,\n ...to.query,\n },\n });\n }\n }\n\n next();\n });\n};\n\n/**\n * Vue 2 版本的路由查询参数保留插件\n * @param options 插件配置选项\n */\nfunction createQueryPreservePlugin(options: QueryPreserveOptions = {}) {\n return {\n install(Vue: any) {\n const _ = () => {\n try {\n // 等待路由实例初始化完成\n const router = Vue.prototype.$router;\n init(router, options);\n } catch {}\n requestAnimationFrame(_);\n };\n _();\n },\n init,\n };\n}\n\nexport default createQueryPreservePlugin;\n"],"names":[],"mappings":"AAmBA,MAAM,OAAO,CAAC,QAAa,UAAgC,OAAO;AAChE,QAAM,EAAE,eAAe,IAAI,mBAAmB;AAC9C,SAAO,WAAW,CAAC,IAAS,MAAW,SAAc;AAEnD,QAAI,gBAAgB;AAClB,YAAM,SAAS,eAAe,IAAI,IAAI;AACtC,UAAI,WAAW,OAAO;AACpB,eAAO,KAAK,KAAK;AAAA,MACnB;AAAA,IACF;AAGA,UAAM,YAAoC,CAAA;AAC1C,QAAI,aAAa,SAAS,KAAK,KAAK,OAAO;AACzC,mBAAa,QAAQ,CAAC,QAAQ;AAC5B,YAAI,KAAK,MAAM,GAAG,MAAM,QAAW;AACjC,oBAAU,GAAG,IAAI,KAAK,MAAM,GAAG;AAAA,QACjC;AAAA,MACF,CAAC;AAAA,IACH;AAGA,QAAI,OAAO,KAAK,SAAS,EAAE,SAAS,GAAG;AACrC,YAAM,qBAAqB,aAAa;AAAA,QACtC,CAAC,QAAQ,GAAG,MAAM,GAAG,MAAM;AAAA,MAAA;AAE7B,UAAI,oBAAoB;AACtB,eAAO,KAAK;AAAA,UACV,GAAG;AAAA,UACH,OAAO;AAAA,YACL,GAAG;AAAA,YACH,GAAG,GAAG;AAAA,UAAA;AAAA,QACR,CACD;AAAA,MACH;AAAA,IACF;AAEA,SAAA;AAAA,EACF,CAAC;AACH;AAMA,SAAS,0BAA0B,UAAgC,IAAI;AACrE,SAAO;AAAA,IACL,QAAQ,KAAU;AAChB,YAAM,IAAI,MAAM;AACd,YAAI;AAEF,gBAAM,SAAS,IAAI,UAAU;AAC7B,eAAK,QAAQ,OAAO;AAAA,QACtB,QAAQ;AAAA,QAAC;AACT,8BAAsB,CAAC;AAAA,MACzB;AACA,QAAA;AAAA,IACF;AAAA,IACA;AAAA,EAAA;AAEJ;"}
@@ -21,6 +21,7 @@ export interface QueryPreserveOptions {
21
21
  */
22
22
  declare function createQueryPreservePlugin(options?: QueryPreserveOptions): {
23
23
  install(Vue: any): void;
24
+ init: (router: any, options?: QueryPreserveOptions) => void;
24
25
  };
25
26
  export default createQueryPreservePlugin;
26
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,GAAG,IAAI,CAAC;CACzD;AAED;;;GAGG;AACH,iBAAS,yBAAyB,CAAC,OAAO,GAAE,oBAAyB;iBAIpD,GAAG;EAmDnB;AAED,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,GAAG,IAAI,CAAC;CACzD;AA2CD;;;GAGG;AACH,iBAAS,yBAAyB,CAAC,OAAO,GAAE,oBAAyB;iBAEpD,GAAG;mBA/CE,GAAG,YAAW,oBAAoB;EA4DvD;AAED,eAAe,yBAAyB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "@msom/vue-query-preserve-v2",
4
- "version": "1.0.3",
4
+ "version": "1.0.5",
5
5
  "description": "Vue 2 插件,在路由跳转时自动保留指定的查询参数",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.js",