@spcsn/taro-runtime 0.1.1 → 1.0.0

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.
Files changed (110) hide show
  1. package/README.md +16 -39
  2. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/assertClassBrand.js +7 -0
  3. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/checkPrivateRedeclaration.js +6 -0
  4. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldGet2.js +7 -0
  5. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldInitSpec.js +7 -0
  6. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldSet2.js +7 -0
  7. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateMethodInitSpec.js +7 -0
  8. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/defineProperty.js +12 -0
  9. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/objectSpread2.js +25 -0
  10. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/toPrimitive.js +14 -0
  11. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/toPropertyKey.js +9 -0
  12. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/typeof.js +11 -0
  13. package/dist/bom/{URL.js → URL2.js} +39 -30
  14. package/dist/bom/URL2.js.map +1 -0
  15. package/dist/bom/document.d.ts +0 -1
  16. package/dist/bom/document.js +1 -54
  17. package/dist/bom/document.js.map +1 -1
  18. package/dist/bom/get-computed-style.js +8 -0
  19. package/dist/bom/get-computed-style.js.map +1 -0
  20. package/dist/bom/history.d.ts +1 -5
  21. package/dist/bom/history.js +53 -40
  22. package/dist/bom/history.js.map +1 -1
  23. package/dist/bom/location.d.ts +1 -11
  24. package/dist/bom/location.js +103 -93
  25. package/dist/bom/location.js.map +1 -1
  26. package/dist/bom/navigator.js +1 -2
  27. package/dist/bom/navigator.js.map +1 -1
  28. package/dist/bom/raf.d.ts +2 -2
  29. package/dist/bom/raf.js +2 -2
  30. package/dist/bom/raf.js.map +1 -1
  31. package/dist/bom/url-search-params.d.ts +14 -0
  32. package/dist/bom/{URLSearchParams.js → url-search-params.js} +26 -25
  33. package/dist/bom/url-search-params.js.map +1 -0
  34. package/dist/bom/{URL.d.ts → url.d.ts} +2 -6
  35. package/dist/bom/url.js +196 -0
  36. package/dist/bom/url.js.map +1 -0
  37. package/dist/bom/window.d.ts +3 -3
  38. package/dist/bom/window.js +3 -3
  39. package/dist/bom/window.js.map +1 -1
  40. package/dist/current.d.ts +3 -0
  41. package/dist/current.js +10 -1
  42. package/dist/current.js.map +1 -1
  43. package/dist/dom/anchor-element.js +17 -9
  44. package/dist/dom/anchor-element.js.map +1 -1
  45. package/dist/dom/class-list.js +2 -1
  46. package/dist/dom/class-list.js.map +1 -1
  47. package/dist/dom/document.js.map +1 -1
  48. package/dist/dom/element.js +9 -8
  49. package/dist/dom/element.js.map +1 -1
  50. package/dist/dom/event-target.js +2 -4
  51. package/dist/dom/event-target.js.map +1 -1
  52. package/dist/dom/event.d.ts +1 -1
  53. package/dist/dom/event.js +19 -28
  54. package/dist/dom/event.js.map +1 -1
  55. package/dist/dom/form.js +3 -2
  56. package/dist/dom/form.js.map +1 -1
  57. package/dist/dom/node.d.ts +4 -3
  58. package/dist/dom/node.js +23 -13
  59. package/dist/dom/node.js.map +1 -1
  60. package/dist/dom/root.js +4 -6
  61. package/dist/dom/root.js.map +1 -1
  62. package/dist/dom/{style_properties.js → style-properties.js} +2 -2
  63. package/dist/dom/{style_properties.js.map → style-properties.js.map} +1 -1
  64. package/dist/dom/style.js +1 -1
  65. package/dist/dom/style.js.map +1 -1
  66. package/dist/dom/text.d.ts +1 -1
  67. package/dist/dom/text.js.map +1 -1
  68. package/dist/dom/transfer.js.map +1 -1
  69. package/dist/dom/tree.js +1 -1
  70. package/dist/dom/tree.js.map +1 -1
  71. package/dist/dom-external/mutation-observer/implements.js +1 -1
  72. package/dist/dom-external/mutation-observer/implements.js.map +1 -1
  73. package/dist/dsl/common.js +45 -63
  74. package/dist/dsl/common.js.map +1 -1
  75. package/dist/env.js +2 -2
  76. package/dist/env.js.map +1 -1
  77. package/dist/hydrate.js +11 -8
  78. package/dist/hydrate.js.map +1 -1
  79. package/dist/index.cjs.d.ts +4 -4
  80. package/dist/index.cjs.js +670 -911
  81. package/dist/index.cjs.js.map +1 -1
  82. package/dist/index.d.ts +4 -4
  83. package/dist/index.js +6 -6
  84. package/dist/next-tick.js +1 -4
  85. package/dist/next-tick.js.map +1 -1
  86. package/dist/perf.d.ts +1 -1
  87. package/dist/perf.js +10 -6
  88. package/dist/perf.js.map +1 -1
  89. package/dist/polyfill/index.js +1 -6
  90. package/dist/polyfill/index.js.map +1 -1
  91. package/dist/runtime.esm.d.ts +4 -4
  92. package/dist/runtime.esm.js +669 -911
  93. package/dist/runtime.esm.js.map +1 -1
  94. package/dist/utils/cache.js.map +1 -1
  95. package/dist/utils/index.js +9 -6
  96. package/dist/utils/index.js.map +1 -1
  97. package/dist/utils/router.js +2 -1
  98. package/dist/utils/router.js.map +1 -1
  99. package/package.json +26 -20
  100. package/LICENSE +0 -174
  101. package/dist/bom/URL.js.map +0 -1
  102. package/dist/bom/URLSearchParams.d.ts +0 -1
  103. package/dist/bom/URLSearchParams.js.map +0 -1
  104. package/dist/bom/getComputedStyle.js +0 -9
  105. package/dist/bom/getComputedStyle.js.map +0 -1
  106. package/dist/polyfill/intersection-observer.js +0 -494
  107. package/dist/polyfill/intersection-observer.js.map +0 -1
  108. /package/dist/bom/{getComputedStyle.d.ts → get-computed-style.d.ts} +0 -0
  109. /package/dist/dom/{node_types.d.ts → node-types.d.ts} +0 -0
  110. /package/dist/dom/{style_properties.d.ts → style-properties.d.ts} +0 -0
@@ -1,73 +1,78 @@
1
1
  import "../constants/index.js";
2
2
  import { Events } from "../emitter/emitter.js";
3
- import env from "../env.js";
4
3
  import { RuntimeCache } from "../utils/cache.js";
4
+ import { _classPrivateMethodInitSpec } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateMethodInitSpec.js";
5
+ import { _classPrivateFieldInitSpec } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldInitSpec.js";
6
+ import { _assertClassBrand } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/assertClassBrand.js";
7
+ import { _classPrivateFieldSet2 } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldSet2.js";
8
+ import { _classPrivateFieldGet2 } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldGet2.js";
5
9
  import { isNumber, isString } from "@spcsn/taro-shared";
6
10
  //#region src/bom/history.ts
7
11
  const cache = new RuntimeCache("history");
12
+ var _location = /* @__PURE__ */ new WeakMap();
13
+ var _stack = /* @__PURE__ */ new WeakMap();
14
+ var _cur = /* @__PURE__ */ new WeakMap();
15
+ var _window = /* @__PURE__ */ new WeakMap();
16
+ var _TaroHistory_brand = /* @__PURE__ */ new WeakSet();
8
17
  var TaroHistory = class extends Events {
9
18
  constructor(location, options) {
10
19
  super();
11
- this._stack = [];
12
- this._cur = 0;
13
- this._window = options.window;
14
- this._location = location;
15
- this._location.on("__record_history__", (href) => {
16
- this._cur++;
17
- this._stack = this._stack.slice(0, this._cur);
18
- this._stack.push({
20
+ _classPrivateMethodInitSpec(this, _TaroHistory_brand);
21
+ _classPrivateFieldInitSpec(this, _location, void 0);
22
+ _classPrivateFieldInitSpec(this, _stack, []);
23
+ _classPrivateFieldInitSpec(this, _cur, 0);
24
+ _classPrivateFieldInitSpec(this, _window, void 0);
25
+ _classPrivateFieldSet2(_window, this, options.window);
26
+ _classPrivateFieldSet2(_location, this, location);
27
+ _classPrivateFieldGet2(_location, this).on("__record_history__", (href) => {
28
+ var _this$cur;
29
+ _classPrivateFieldSet2(_cur, this, (_this$cur = _classPrivateFieldGet2(_cur, this), _this$cur++, _this$cur));
30
+ _classPrivateFieldSet2(_stack, this, _classPrivateFieldGet2(_stack, this).slice(0, _classPrivateFieldGet2(_cur, this)));
31
+ _classPrivateFieldGet2(_stack, this).push({
19
32
  state: null,
20
33
  title: "",
21
34
  url: href
22
35
  });
23
36
  }, null);
24
- this._location.on("__reset_history__", (href) => {
25
- this._reset(href);
37
+ _classPrivateFieldGet2(_location, this).on("__reset_history__", (href) => {
38
+ _assertClassBrand(_TaroHistory_brand, this, _reset).call(this, href);
26
39
  }, null);
27
40
  this.on("0", () => {
28
- this._reset();
41
+ _assertClassBrand(_TaroHistory_brand, this, _reset).call(this);
29
42
  }, null);
30
43
  this.on("1", (pageId) => {
31
44
  cache.set(pageId, {
32
- location: this._location,
33
- stack: this._stack.slice(),
34
- cur: this._cur
45
+ location: _classPrivateFieldGet2(_location, this),
46
+ stack: _classPrivateFieldGet2(_stack, this).slice(),
47
+ cur: _classPrivateFieldGet2(_cur, this)
35
48
  });
36
49
  }, null);
37
50
  this.on("2", (pageId) => {
38
51
  if (cache.has(pageId)) {
39
52
  const ctx = cache.get(pageId);
40
- this._location = ctx.location;
41
- this._stack = ctx.stack;
42
- this._cur = ctx.cur;
53
+ _classPrivateFieldSet2(_location, this, ctx.location);
54
+ _classPrivateFieldSet2(_stack, this, ctx.stack);
55
+ _classPrivateFieldSet2(_cur, this, ctx.cur);
43
56
  }
44
57
  }, null);
45
58
  this.on("3", (pageId) => {
46
59
  cache.delete(pageId);
47
60
  }, null);
48
- this._reset();
49
- }
50
- _reset(href = "") {
51
- this._stack = [{
52
- state: null,
53
- title: "",
54
- url: href || this._location.href
55
- }];
56
- this._cur = 0;
61
+ _assertClassBrand(_TaroHistory_brand, this, _reset).call(this);
57
62
  }
58
63
  get length() {
59
- return this._stack.length;
64
+ return _classPrivateFieldGet2(_stack, this).length;
60
65
  }
61
66
  get state() {
62
- return this._stack[this._cur].state;
67
+ return _classPrivateFieldGet2(_stack, this)[_classPrivateFieldGet2(_cur, this)].state;
63
68
  }
64
69
  go(delta) {
65
70
  if (!isNumber(delta) || isNaN(delta)) return;
66
- let targetIdx = this._cur + delta;
71
+ let targetIdx = _classPrivateFieldGet2(_cur, this) + delta;
67
72
  targetIdx = Math.min(Math.max(targetIdx, 0), this.length - 1);
68
- this._cur = targetIdx;
69
- this._location.trigger("__set_href_without_history__", this._stack[this._cur].url);
70
- this._window.trigger("popstate", this._stack[this._cur]);
73
+ _classPrivateFieldSet2(_cur, this, targetIdx);
74
+ _classPrivateFieldGet2(_location, this).trigger("__set_href_without_history__", _classPrivateFieldGet2(_stack, this)[_classPrivateFieldGet2(_cur, this)].url);
75
+ _classPrivateFieldGet2(_window, this).trigger("popstate", _classPrivateFieldGet2(_stack, this)[_classPrivateFieldGet2(_cur, this)]);
71
76
  }
72
77
  back() {
73
78
  this.go(-1);
@@ -77,29 +82,37 @@ var TaroHistory = class extends Events {
77
82
  }
78
83
  pushState(state, title, url) {
79
84
  if (!url || !isString(url)) return;
80
- this._stack = this._stack.slice(0, this._cur + 1);
81
- this._stack.push({
85
+ _classPrivateFieldSet2(_stack, this, _classPrivateFieldGet2(_stack, this).slice(0, _classPrivateFieldGet2(_cur, this) + 1));
86
+ _classPrivateFieldGet2(_stack, this).push({
82
87
  state,
83
88
  title,
84
89
  url
85
90
  });
86
- this._cur = this.length - 1;
87
- this._location.trigger("__set_href_without_history__", url);
91
+ _classPrivateFieldSet2(_cur, this, this.length - 1);
92
+ _classPrivateFieldGet2(_location, this).trigger("__set_href_without_history__", url);
88
93
  }
89
94
  replaceState(state, title, url) {
90
95
  if (!url || !isString(url)) return;
91
- this._stack[this._cur] = {
96
+ _classPrivateFieldGet2(_stack, this)[_classPrivateFieldGet2(_cur, this)] = {
92
97
  state,
93
98
  title,
94
99
  url
95
100
  };
96
- this._location.trigger("__set_href_without_history__", url);
101
+ _classPrivateFieldGet2(_location, this).trigger("__set_href_without_history__", url);
97
102
  }
98
103
  get cache() {
99
104
  return cache;
100
105
  }
101
106
  };
102
- const History = process.env.TARO_PLATFORM === "web" ? env.window.History : TaroHistory;
107
+ function _reset(href = "") {
108
+ _classPrivateFieldSet2(_stack, this, [{
109
+ state: null,
110
+ title: "",
111
+ url: href || _classPrivateFieldGet2(_location, this).href
112
+ }]);
113
+ _classPrivateFieldSet2(_cur, this, 0);
114
+ }
115
+ const History = TaroHistory;
103
116
  //#endregion
104
117
  export { History };
105
118
 
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","names":[],"sources":["../../src/bom/history.ts"],"sourcesContent":["import { isNumber, isString } from '@spcsn/taro-shared';\n\nimport { CONTEXT_ACTIONS } from '../constants';\nimport { Events } from '../emitter/emitter';\nimport env from '../env';\nimport { RuntimeCache } from '../utils/cache';\n\nimport type { TaroLocation } from './location';\n\nexport interface HistoryState {\n state: Record<string, any> | null;\n title: string;\n url: string;\n}\n\ntype Options = {\n window: any;\n};\ntype HistoryContext = {\n location: TaroLocation;\n stack: HistoryState[];\n cur: number;\n};\nconst cache = new RuntimeCache<HistoryContext>('history');\n\nclass TaroHistory extends Events {\n /* private property */\n private _location: TaroLocation;\n private _stack: HistoryState[] = [];\n private _cur = 0;\n\n private _window: any;\n\n constructor(location: TaroLocation, options: Options) {\n super();\n\n this._window = options.window;\n this._location = location;\n\n this._location.on(\n '__record_history__',\n (href: string) => {\n this._cur++;\n this._stack = this._stack.slice(0, this._cur);\n this._stack.push({\n state: null,\n title: '',\n url: href,\n });\n },\n null,\n );\n\n this._location.on(\n '__reset_history__',\n (href: string) => {\n this._reset(href);\n },\n null,\n );\n\n // 切换上下文行为\n\n this.on(\n CONTEXT_ACTIONS.INIT,\n () => {\n this._reset();\n },\n null,\n );\n\n this.on(\n CONTEXT_ACTIONS.RESTORE,\n (pageId: string) => {\n cache.set(pageId, {\n location: this._location,\n stack: this._stack.slice(),\n cur: this._cur,\n });\n },\n null,\n );\n\n this.on(\n CONTEXT_ACTIONS.RECOVER,\n (pageId: string) => {\n if (cache.has(pageId)) {\n const ctx = cache.get(pageId)!;\n this._location = ctx.location;\n this._stack = ctx.stack;\n this._cur = ctx.cur;\n }\n },\n null,\n );\n\n this.on(\n CONTEXT_ACTIONS.DESTROY,\n (pageId: string) => {\n cache.delete(pageId);\n },\n null,\n );\n\n this._reset();\n }\n\n private _reset(href = '') {\n this._stack = [\n {\n state: null,\n title: '',\n url: href || this._location.href,\n },\n ];\n this._cur = 0;\n }\n\n /* public property */\n get length() {\n return this._stack.length;\n }\n\n get state() {\n return this._stack[this._cur].state;\n }\n\n /* public method */\n go(delta: number) {\n if (!isNumber(delta) || isNaN(delta)) return;\n\n let targetIdx = this._cur + delta;\n targetIdx = Math.min(Math.max(targetIdx, 0), this.length - 1);\n\n this._cur = targetIdx;\n\n this._location.trigger('__set_href_without_history__', this._stack[this._cur].url);\n this._window.trigger('popstate', this._stack[this._cur]);\n }\n\n back() {\n this.go(-1);\n }\n\n forward() {\n this.go(1);\n }\n\n pushState(state: any, title: string, url: string) {\n if (!url || !isString(url)) return;\n this._stack = this._stack.slice(0, this._cur + 1);\n this._stack.push({\n state,\n title,\n url,\n });\n this._cur = this.length - 1;\n\n this._location.trigger('__set_href_without_history__', url);\n }\n\n replaceState(state: any, title: string, url: string) {\n if (!url || !isString(url)) return;\n this._stack[this._cur] = {\n state,\n title,\n url,\n };\n\n this._location.trigger('__set_href_without_history__', url);\n }\n\n // For debug\n get cache() {\n return cache;\n }\n}\n\nexport type { TaroHistory };\nexport const History: typeof TaroHistory = process.env.TARO_PLATFORM === 'web' ? env.window.History : TaroHistory;\n"],"mappings":";;;;;;AAuBA,MAAM,QAAQ,IAAI,aAA6B,SAAS;AAExD,IAAM,cAAN,cAA0B,OAAO;CAQ/B,YAAY,UAAwB,SAAkB;EACpD,MAAM;gBANyB,CAAC;cACnB;EAOb,KAAK,UAAU,QAAQ;EACvB,KAAK,YAAY;EAEjB,KAAK,UAAU,GACb,uBACC,SAAiB;GAChB,KAAK;GACL,KAAK,SAAS,KAAK,OAAO,MAAM,GAAG,KAAK,IAAI;GAC5C,KAAK,OAAO,KAAK;IACf,OAAO;IACP,OAAO;IACP,KAAK;GACP,CAAC;EACH,GACA,IACF;EAEA,KAAK,UAAU,GACb,sBACC,SAAiB;GAChB,KAAK,OAAO,IAAI;EAClB,GACA,IACF;EAIA,KAAK,GAAA,WAEG;GACJ,KAAK,OAAO;EACd,GACA,IACF;EAEA,KAAK,GAAA,MAEF,WAAmB;GAClB,MAAM,IAAI,QAAQ;IAChB,UAAU,KAAK;IACf,OAAO,KAAK,OAAO,MAAM;IACzB,KAAK,KAAK;GACZ,CAAC;EACH,GACA,IACF;EAEA,KAAK,GAAA,MAEF,WAAmB;GAClB,IAAI,MAAM,IAAI,MAAM,GAAG;IACrB,MAAM,MAAM,MAAM,IAAI,MAAM;IAC5B,KAAK,YAAY,IAAI;IACrB,KAAK,SAAS,IAAI;IAClB,KAAK,OAAO,IAAI;GAClB;EACF,GACA,IACF;EAEA,KAAK,GAAA,MAEF,WAAmB;GAClB,MAAM,OAAO,MAAM;EACrB,GACA,IACF;EAEA,KAAK,OAAO;CACd;CAEA,OAAe,OAAO,IAAI;EACxB,KAAK,SAAS,CACZ;GACE,OAAO;GACP,OAAO;GACP,KAAK,QAAQ,KAAK,UAAU;EAC9B,CACF;EACA,KAAK,OAAO;CACd;CAGA,IAAI,SAAS;EACX,OAAO,KAAK,OAAO;CACrB;CAEA,IAAI,QAAQ;EACV,OAAO,KAAK,OAAO,KAAK,MAAM;CAChC;CAGA,GAAG,OAAe;EAChB,IAAI,CAAC,SAAS,KAAK,KAAK,MAAM,KAAK,GAAG;EAEtC,IAAI,YAAY,KAAK,OAAO;EAC5B,YAAY,KAAK,IAAI,KAAK,IAAI,WAAW,CAAC,GAAG,KAAK,SAAS,CAAC;EAE5D,KAAK,OAAO;EAEZ,KAAK,UAAU,QAAQ,gCAAgC,KAAK,OAAO,KAAK,MAAM,GAAG;EACjF,KAAK,QAAQ,QAAQ,YAAY,KAAK,OAAO,KAAK,KAAK;CACzD;CAEA,OAAO;EACL,KAAK,GAAG,EAAE;CACZ;CAEA,UAAU;EACR,KAAK,GAAG,CAAC;CACX;CAEA,UAAU,OAAY,OAAe,KAAa;EAChD,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG;EAC5B,KAAK,SAAS,KAAK,OAAO,MAAM,GAAG,KAAK,OAAO,CAAC;EAChD,KAAK,OAAO,KAAK;GACf;GACA;GACA;EACF,CAAC;EACD,KAAK,OAAO,KAAK,SAAS;EAE1B,KAAK,UAAU,QAAQ,gCAAgC,GAAG;CAC5D;CAEA,aAAa,OAAY,OAAe,KAAa;EACnD,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG;EAC5B,KAAK,OAAO,KAAK,QAAQ;GACvB;GACA;GACA;EACF;EAEA,KAAK,UAAU,QAAQ,gCAAgC,GAAG;CAC5D;CAGA,IAAI,QAAQ;EACV,OAAO;CACT;AACF;AAGA,MAAa,UAA8B,QAAQ,IAAI,kBAAkB,QAAQ,IAAI,OAAO,UAAU"}
1
+ {"version":3,"file":"history.js","names":[],"sources":["../../src/bom/history.ts"],"sourcesContent":["import { isNumber, isString } from '@spcsn/taro-shared';\n\nimport { CONTEXT_ACTIONS } from '../constants';\nimport { Events } from '../emitter/emitter';\nimport { RuntimeCache } from '../utils/cache';\n\nimport type { TaroLocation } from './location';\n\nexport interface HistoryState {\n state: Record<string, any> | null;\n title: string;\n url: string;\n}\n\ntype Options = {\n window: any;\n};\ntype HistoryContext = {\n location: TaroLocation;\n stack: HistoryState[];\n cur: number;\n};\nconst cache = new RuntimeCache<HistoryContext>('history');\n\nclass TaroHistory extends Events {\n /* private property */\n #location: TaroLocation;\n #stack: HistoryState[] = [];\n #cur = 0;\n\n #window: any;\n\n constructor(location: TaroLocation, options: Options) {\n super();\n\n this.#window = options.window;\n this.#location = location;\n\n this.#location.on(\n '__record_history__',\n (href: string) => {\n this.#cur++;\n this.#stack = this.#stack.slice(0, this.#cur);\n this.#stack.push({\n state: null,\n title: '',\n url: href,\n });\n },\n null,\n );\n\n this.#location.on(\n '__reset_history__',\n (href: string) => {\n this.#reset(href);\n },\n null,\n );\n\n // 切换上下文行为\n\n this.on(\n CONTEXT_ACTIONS.INIT,\n () => {\n this.#reset();\n },\n null,\n );\n\n this.on(\n CONTEXT_ACTIONS.RESTORE,\n (pageId: string) => {\n cache.set(pageId, {\n location: this.#location,\n stack: this.#stack.slice(),\n cur: this.#cur,\n });\n },\n null,\n );\n\n this.on(\n CONTEXT_ACTIONS.RECOVER,\n (pageId: string) => {\n if (cache.has(pageId)) {\n const ctx = cache.get(pageId)!;\n this.#location = ctx.location;\n this.#stack = ctx.stack;\n this.#cur = ctx.cur;\n }\n },\n null,\n );\n\n this.on(\n CONTEXT_ACTIONS.DESTROY,\n (pageId: string) => {\n cache.delete(pageId);\n },\n null,\n );\n\n this.#reset();\n }\n\n #reset(href = '') {\n this.#stack = [\n {\n state: null,\n title: '',\n url: href || this.#location.href,\n },\n ];\n this.#cur = 0;\n }\n\n /* public property */\n get length() {\n return this.#stack.length;\n }\n\n get state() {\n return this.#stack[this.#cur].state;\n }\n\n /* public method */\n go(delta: number) {\n if (!isNumber(delta) || isNaN(delta)) return;\n\n let targetIdx = this.#cur + delta;\n targetIdx = Math.min(Math.max(targetIdx, 0), this.length - 1);\n\n this.#cur = targetIdx;\n\n this.#location.trigger('__set_href_without_history__', this.#stack[this.#cur].url);\n this.#window.trigger('popstate', this.#stack[this.#cur]);\n }\n\n back() {\n this.go(-1);\n }\n\n forward() {\n this.go(1);\n }\n\n pushState(state: any, title: string, url: string) {\n if (!url || !isString(url)) return;\n this.#stack = this.#stack.slice(0, this.#cur + 1);\n this.#stack.push({\n state,\n title,\n url,\n });\n this.#cur = this.length - 1;\n\n this.#location.trigger('__set_href_without_history__', url);\n }\n\n replaceState(state: any, title: string, url: string) {\n if (!url || !isString(url)) return;\n this.#stack[this.#cur] = {\n state,\n title,\n url,\n };\n\n this.#location.trigger('__set_href_without_history__', url);\n }\n\n // For debug\n get cache() {\n return cache;\n }\n}\n\nexport type { TaroHistory };\nexport const History: typeof TaroHistory = TaroHistory;\n"],"mappings":"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"}
@@ -7,18 +7,8 @@ type LocationContext = {
7
7
  lastHref: string;
8
8
  };
9
9
  declare class TaroLocation extends Events {
10
- private _url;
11
- private _noCheckUrl;
12
- private _window;
10
+ #private;
13
11
  constructor(options: Options);
14
- private _reset;
15
- private _getPreValue;
16
- private _rollBack;
17
- private _recordHistory;
18
- /**
19
- * 校验url的变化,是否需要更新history
20
- */
21
- private _checkUrlChange;
22
12
  get protocol(): string;
23
13
  set protocol(val: string);
24
14
  get host(): string;
@@ -1,29 +1,39 @@
1
1
  import "../constants/index.js";
2
2
  import { Events } from "../emitter/emitter.js";
3
- import env from "../env.js";
4
3
  import { RuntimeCache } from "../utils/cache.js";
4
+ import { _classPrivateMethodInitSpec } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateMethodInitSpec.js";
5
+ import { _classPrivateFieldInitSpec } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldInitSpec.js";
6
+ import { _assertClassBrand } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/assertClassBrand.js";
7
+ import { _classPrivateFieldSet2 } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldSet2.js";
8
+ import { _classPrivateFieldGet2 } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldGet2.js";
5
9
  import { getCurrentInstance } from "../current.js";
6
- import { TaroURLProvider } from "./URL.js";
10
+ import { TaroURLProvider } from "./url.js";
7
11
  import { isNumber, isString, warn } from "@spcsn/taro-shared";
8
12
  //#region src/bom/location.ts
9
13
  const INIT_URL = "https://taro.com";
10
14
  const cache = new RuntimeCache("location");
15
+ var _url = /* @__PURE__ */ new WeakMap();
16
+ var _noCheckUrl = /* @__PURE__ */ new WeakMap();
17
+ var _window = /* @__PURE__ */ new WeakMap();
18
+ var _TaroLocation_brand = /* @__PURE__ */ new WeakSet();
11
19
  var TaroLocation = class extends Events {
12
20
  constructor(options) {
13
21
  super();
14
- this._url = new TaroURLProvider(INIT_URL);
15
- this._noCheckUrl = false;
16
- this._window = options.window;
17
- this._reset();
22
+ _classPrivateMethodInitSpec(this, _TaroLocation_brand);
23
+ _classPrivateFieldInitSpec(this, _url, new TaroURLProvider(INIT_URL));
24
+ _classPrivateFieldInitSpec(this, _noCheckUrl, false);
25
+ _classPrivateFieldInitSpec(this, _window, void 0);
26
+ _classPrivateFieldSet2(_window, this, options.window);
27
+ _assertClassBrand(_TaroLocation_brand, this, _reset).call(this);
18
28
  this.on("__set_href_without_history__", (href) => {
19
- this._noCheckUrl = true;
20
- const lastHash = this._url.hash;
21
- this._url.href = generateFullUrl(href);
22
- if (lastHash !== this._url.hash) this._window.trigger("hashchange");
23
- this._noCheckUrl = false;
29
+ _classPrivateFieldSet2(_noCheckUrl, this, true);
30
+ const lastHash = _classPrivateFieldGet2(_url, this).hash;
31
+ _classPrivateFieldGet2(_url, this).href = generateFullUrl(href);
32
+ if (lastHash !== _classPrivateFieldGet2(_url, this).hash) _classPrivateFieldGet2(_window, this).trigger("hashchange");
33
+ _classPrivateFieldSet2(_noCheckUrl, this, false);
24
34
  }, null);
25
35
  this.on("0", () => {
26
- this._reset();
36
+ _assertClassBrand(_TaroLocation_brand, this, _reset).call(this);
27
37
  }, null);
28
38
  this.on("1", (pageId) => {
29
39
  cache.set(pageId, { lastHref: this.href });
@@ -31,145 +41,104 @@ var TaroLocation = class extends Events {
31
41
  this.on("2", (pageId) => {
32
42
  if (cache.has(pageId)) {
33
43
  const ctx = cache.get(pageId);
34
- this._noCheckUrl = true;
35
- this._url.href = ctx.lastHref;
36
- this._noCheckUrl = false;
44
+ _classPrivateFieldSet2(_noCheckUrl, this, true);
45
+ _classPrivateFieldGet2(_url, this).href = ctx.lastHref;
46
+ _classPrivateFieldSet2(_noCheckUrl, this, false);
37
47
  }
38
48
  }, null);
39
49
  this.on("3", (pageId) => {
40
50
  cache.delete(pageId);
41
51
  }, null);
42
52
  }
43
- _reset() {
44
- const router = getCurrentInstance().router;
45
- if (router) {
46
- const { path, params } = router;
47
- const searchArr = Object.keys(params).map((key) => {
48
- return `${key}=${params[key]}`;
49
- });
50
- const searchStr = searchArr.length > 0 ? "?" + searchArr.join("&") : "";
51
- const url = `${INIT_URL}${path.startsWith("/") ? path : "/" + path}${searchStr}`;
52
- this._url = new TaroURLProvider(url);
53
- this.trigger("__reset_history__", this.href);
54
- }
55
- }
56
- _getPreValue() {
57
- return this._url._toRaw();
58
- }
59
- _rollBack(href) {
60
- this._url.href = href;
61
- }
62
- _recordHistory() {
63
- this.trigger("__record_history__", this.href);
64
- }
65
- /**
66
- * 校验url的变化,是否需要更新history
67
- */
68
- _checkUrlChange(preValue) {
69
- if (this._noCheckUrl) return false;
70
- const { protocol, hostname, port, pathname, search, hash } = this._url._toRaw();
71
- if (protocol !== preValue.protocol || hostname !== preValue.hostname || port !== preValue.port) {
72
- this._rollBack(preValue.href);
73
- return false;
74
- }
75
- if (pathname !== preValue.pathname) return true;
76
- if (search !== preValue.search) return true;
77
- if (hash !== preValue.hash) {
78
- this._window.trigger("hashchange");
79
- return true;
80
- }
81
- this._rollBack(preValue.href);
82
- return false;
83
- }
84
53
  get protocol() {
85
- return this._url.protocol;
54
+ return _classPrivateFieldGet2(_url, this).protocol;
86
55
  }
87
56
  set protocol(val) {
88
57
  if (!val || !isString(val) || !/^(http|https):$/i.test(val.trim())) return;
89
58
  val = val.trim();
90
- const preValue = this._getPreValue();
91
- this._url.protocol = val;
92
- if (this._checkUrlChange(preValue)) this._recordHistory();
59
+ const preValue = _assertClassBrand(_TaroLocation_brand, this, _getPreValue).call(this);
60
+ _classPrivateFieldGet2(_url, this).protocol = val;
61
+ if (_assertClassBrand(_TaroLocation_brand, this, _checkUrlChange).call(this, preValue)) _assertClassBrand(_TaroLocation_brand, this, _recordHistory).call(this);
93
62
  }
94
63
  get host() {
95
- return this._url.host;
64
+ return _classPrivateFieldGet2(_url, this).host;
96
65
  }
97
66
  set host(val) {
98
67
  if (!val || !isString(val)) return;
99
68
  val = val.trim();
100
- const preValue = this._getPreValue();
101
- this._url.host = val;
102
- if (this._checkUrlChange(preValue)) this._recordHistory();
69
+ const preValue = _assertClassBrand(_TaroLocation_brand, this, _getPreValue).call(this);
70
+ _classPrivateFieldGet2(_url, this).host = val;
71
+ if (_assertClassBrand(_TaroLocation_brand, this, _checkUrlChange).call(this, preValue)) _assertClassBrand(_TaroLocation_brand, this, _recordHistory).call(this);
103
72
  }
104
73
  get hostname() {
105
- return this._url.hostname;
74
+ return _classPrivateFieldGet2(_url, this).hostname;
106
75
  }
107
76
  set hostname(val) {
108
77
  if (!val || !isString(val)) return;
109
78
  val = val.trim();
110
- const preValue = this._getPreValue();
111
- this._url.hostname = val;
112
- if (this._checkUrlChange(preValue)) this._recordHistory();
79
+ const preValue = _assertClassBrand(_TaroLocation_brand, this, _getPreValue).call(this);
80
+ _classPrivateFieldGet2(_url, this).hostname = val;
81
+ if (_assertClassBrand(_TaroLocation_brand, this, _checkUrlChange).call(this, preValue)) _assertClassBrand(_TaroLocation_brand, this, _recordHistory).call(this);
113
82
  }
114
83
  get port() {
115
- return this._url.port;
84
+ return _classPrivateFieldGet2(_url, this).port;
116
85
  }
117
86
  set port(val) {
118
87
  const xVal = Number(val = val.trim());
119
88
  if (!isNumber(xVal) || xVal <= 0) return;
120
- const preValue = this._getPreValue();
121
- this._url.port = val;
122
- if (this._checkUrlChange(preValue)) this._recordHistory();
89
+ const preValue = _assertClassBrand(_TaroLocation_brand, this, _getPreValue).call(this);
90
+ _classPrivateFieldGet2(_url, this).port = val;
91
+ if (_assertClassBrand(_TaroLocation_brand, this, _checkUrlChange).call(this, preValue)) _assertClassBrand(_TaroLocation_brand, this, _recordHistory).call(this);
123
92
  }
124
93
  get pathname() {
125
- return this._url.pathname;
94
+ return _classPrivateFieldGet2(_url, this).pathname;
126
95
  }
127
96
  set pathname(val) {
128
97
  if (!val || !isString(val)) return;
129
98
  val = val.trim();
130
- const preValue = this._getPreValue();
131
- this._url.pathname = val;
132
- if (this._checkUrlChange(preValue)) this._recordHistory();
99
+ const preValue = _assertClassBrand(_TaroLocation_brand, this, _getPreValue).call(this);
100
+ _classPrivateFieldGet2(_url, this).pathname = val;
101
+ if (_assertClassBrand(_TaroLocation_brand, this, _checkUrlChange).call(this, preValue)) _assertClassBrand(_TaroLocation_brand, this, _recordHistory).call(this);
133
102
  }
134
103
  get search() {
135
- return this._url.search;
104
+ return _classPrivateFieldGet2(_url, this).search;
136
105
  }
137
106
  set search(val) {
138
107
  if (!val || !isString(val)) return;
139
108
  val = val.trim();
140
109
  val = val.startsWith("?") ? val : `?${val}`;
141
- const preValue = this._getPreValue();
142
- this._url.search = val;
143
- if (this._checkUrlChange(preValue)) this._recordHistory();
110
+ const preValue = _assertClassBrand(_TaroLocation_brand, this, _getPreValue).call(this);
111
+ _classPrivateFieldGet2(_url, this).search = val;
112
+ if (_assertClassBrand(_TaroLocation_brand, this, _checkUrlChange).call(this, preValue)) _assertClassBrand(_TaroLocation_brand, this, _recordHistory).call(this);
144
113
  }
145
114
  get hash() {
146
- return this._url.hash;
115
+ return _classPrivateFieldGet2(_url, this).hash;
147
116
  }
148
117
  set hash(val) {
149
118
  if (!val || !isString(val)) return;
150
119
  val = val.trim();
151
120
  val = val.startsWith("#") ? val : `#${val}`;
152
- const preValue = this._getPreValue();
153
- this._url.hash = val;
154
- if (this._checkUrlChange(preValue)) this._recordHistory();
121
+ const preValue = _assertClassBrand(_TaroLocation_brand, this, _getPreValue).call(this);
122
+ _classPrivateFieldGet2(_url, this).hash = val;
123
+ if (_assertClassBrand(_TaroLocation_brand, this, _checkUrlChange).call(this, preValue)) _assertClassBrand(_TaroLocation_brand, this, _recordHistory).call(this);
155
124
  }
156
125
  get href() {
157
- return this._url.href;
126
+ return _classPrivateFieldGet2(_url, this).href;
158
127
  }
159
128
  set href(val) {
160
129
  if (!val || !isString(val) || !/^(http:|https:)?\/\/.+/.test(val = val.trim())) return;
161
- const preValue = this._getPreValue();
162
- this._url.href = val;
163
- if (this._checkUrlChange(preValue)) this._recordHistory();
130
+ const preValue = _assertClassBrand(_TaroLocation_brand, this, _getPreValue).call(this);
131
+ _classPrivateFieldGet2(_url, this).href = val;
132
+ if (_assertClassBrand(_TaroLocation_brand, this, _checkUrlChange).call(this, preValue)) _assertClassBrand(_TaroLocation_brand, this, _recordHistory).call(this);
164
133
  }
165
134
  get origin() {
166
- return this._url.origin;
135
+ return _classPrivateFieldGet2(_url, this).origin;
167
136
  }
168
137
  set origin(val) {
169
138
  if (!val || !isString(val) || !/^(http:|https:)?\/\/.+/.test(val = val.trim())) return;
170
- const preValue = this._getPreValue();
171
- this._url.origin = val;
172
- if (this._checkUrlChange(preValue)) this._recordHistory();
139
+ const preValue = _assertClassBrand(_TaroLocation_brand, this, _getPreValue).call(this);
140
+ _classPrivateFieldGet2(_url, this).origin = val;
141
+ if (_assertClassBrand(_TaroLocation_brand, this, _checkUrlChange).call(this, preValue)) _assertClassBrand(_TaroLocation_brand, this, _recordHistory).call(this);
173
142
  }
174
143
  assign() {
175
144
  warn(true, "小程序环境中调用location.assign()无效.");
@@ -187,7 +156,48 @@ var TaroLocation = class extends Events {
187
156
  return cache;
188
157
  }
189
158
  };
190
- const Location = process.env.TARO_PLATFORM === "web" ? env.window.Location : TaroLocation;
159
+ function _reset() {
160
+ const router = getCurrentInstance().router;
161
+ if (router) {
162
+ const { path, params } = router;
163
+ const searchArr = Object.keys(params).map((key) => {
164
+ return `${key}=${params[key]}`;
165
+ });
166
+ const searchStr = searchArr.length > 0 ? "?" + searchArr.join("&") : "";
167
+ const url = `${INIT_URL}${path.startsWith("/") ? path : "/" + path}${searchStr}`;
168
+ _classPrivateFieldSet2(_url, this, new TaroURLProvider(url));
169
+ this.trigger("__reset_history__", this.href);
170
+ }
171
+ }
172
+ function _getPreValue() {
173
+ return _classPrivateFieldGet2(_url, this)._toRaw();
174
+ }
175
+ function _rollBack(href) {
176
+ _classPrivateFieldGet2(_url, this).href = href;
177
+ }
178
+ function _recordHistory() {
179
+ this.trigger("__record_history__", this.href);
180
+ }
181
+ /**
182
+ * 校验url的变化,是否需要更新history
183
+ */
184
+ function _checkUrlChange(preValue) {
185
+ if (_classPrivateFieldGet2(_noCheckUrl, this)) return false;
186
+ const { protocol, hostname, port, pathname, search, hash } = _classPrivateFieldGet2(_url, this)._toRaw();
187
+ if (protocol !== preValue.protocol || hostname !== preValue.hostname || port !== preValue.port) {
188
+ _assertClassBrand(_TaroLocation_brand, this, _rollBack).call(this, preValue.href);
189
+ return false;
190
+ }
191
+ if (pathname !== preValue.pathname) return true;
192
+ if (search !== preValue.search) return true;
193
+ if (hash !== preValue.hash) {
194
+ _classPrivateFieldGet2(_window, this).trigger("hashchange");
195
+ return true;
196
+ }
197
+ _assertClassBrand(_TaroLocation_brand, this, _rollBack).call(this, preValue.href);
198
+ return false;
199
+ }
200
+ const Location = TaroLocation;
191
201
  function generateFullUrl(val = "") {
192
202
  const origin = INIT_URL;
193
203
  if (/^[/?#]/.test(val)) return origin + val;
@@ -1 +1 @@
1
- {"version":3,"file":"location.js","names":[],"sources":["../../src/bom/location.ts"],"sourcesContent":["import { isNumber, isString, warn } from '@spcsn/taro-shared';\n\nimport { CONTEXT_ACTIONS } from '../constants';\nimport { getCurrentInstance } from '../current';\nimport { Events } from '../emitter/emitter';\nimport env from '../env';\nimport { RuntimeCache } from '../utils/cache';\nimport { TaroURLProvider } from './URL';\n\ntype PreValue = ReturnType<typeof TaroURLProvider.prototype._toRaw>;\n\ntype Options = {\n window: any;\n};\ntype LocationContext = {\n lastHref: string;\n};\n\nconst INIT_URL = 'https://taro.com';\nconst cache = new RuntimeCache<LocationContext>('location');\n\nclass TaroLocation extends Events {\n /* private property */\n private _url = new TaroURLProvider(INIT_URL);\n private _noCheckUrl = false;\n private _window: any;\n\n constructor(options: Options) {\n super();\n\n this._window = options.window;\n\n this._reset();\n\n this.on(\n '__set_href_without_history__',\n (href: string) => {\n this._noCheckUrl = true;\n\n const lastHash = this._url.hash;\n this._url.href = generateFullUrl(href);\n\n if (lastHash !== this._url.hash) {\n this._window.trigger('hashchange');\n }\n\n this._noCheckUrl = false;\n },\n null,\n );\n\n // 切换上下文行为\n this.on(\n CONTEXT_ACTIONS.INIT,\n () => {\n this._reset();\n },\n null,\n );\n\n this.on(\n CONTEXT_ACTIONS.RESTORE,\n (pageId: string) => {\n cache.set(pageId, {\n lastHref: this.href,\n });\n },\n null,\n );\n\n this.on(\n CONTEXT_ACTIONS.RECOVER,\n (pageId: string) => {\n // 数据恢复时,不需要执行跳转\n if (cache.has(pageId)) {\n const ctx = cache.get(pageId)!;\n this._noCheckUrl = true;\n this._url.href = ctx.lastHref;\n this._noCheckUrl = false;\n }\n },\n null,\n );\n\n this.on(\n CONTEXT_ACTIONS.DESTROY,\n (pageId: string) => {\n cache.delete(pageId);\n },\n null,\n );\n }\n\n /* private method */\n private _reset() {\n const Current = getCurrentInstance();\n const router = Current.router;\n if (router) {\n const { path, params } = router;\n const searchArr = Object.keys(params).map((key) => {\n return `${key}=${params[key]}`;\n });\n const searchStr = searchArr.length > 0 ? '?' + searchArr.join('&') : '';\n const url = `${INIT_URL}${path.startsWith('/') ? path : '/' + path}${searchStr}`;\n\n this._url = new TaroURLProvider(url);\n\n this.trigger('__reset_history__', this.href);\n }\n }\n\n private _getPreValue(): PreValue {\n return this._url._toRaw();\n }\n\n private _rollBack(href: string) {\n this._url.href = href;\n }\n\n private _recordHistory() {\n this.trigger('__record_history__', this.href);\n }\n\n /**\n * 校验url的变化,是否需要更新history\n */\n private _checkUrlChange(preValue: PreValue): boolean {\n if (this._noCheckUrl) {\n return false;\n }\n\n const { protocol, hostname, port, pathname, search, hash } = this._url._toRaw();\n\n // 跨域三要素不允许修改\n if (protocol !== preValue.protocol || hostname !== preValue.hostname || port !== preValue.port) {\n this._rollBack(preValue.href);\n return false;\n }\n\n // pathname\n if (pathname !== preValue.pathname) {\n return true;\n }\n\n // search\n if (search !== preValue.search) {\n return true;\n }\n\n // hashchange\n if (hash !== preValue.hash) {\n this._window.trigger('hashchange');\n return true;\n }\n\n this._rollBack(preValue.href);\n return false;\n }\n\n /* public property */\n get protocol() {\n return this._url.protocol;\n }\n\n set protocol(val: string) {\n const REG = /^(http|https):$/i;\n if (!val || !isString(val) || !REG.test(val.trim())) return;\n\n val = val.trim();\n const preValue = this._getPreValue();\n this._url.protocol = val;\n\n if (this._checkUrlChange(preValue)) this._recordHistory();\n }\n\n get host() {\n return this._url.host;\n }\n\n set host(val: string) {\n if (!val || !isString(val)) return;\n val = val.trim();\n\n const preValue = this._getPreValue();\n this._url.host = val;\n\n if (this._checkUrlChange(preValue)) this._recordHistory();\n }\n\n get hostname() {\n return this._url.hostname;\n }\n\n set hostname(val: string) {\n if (!val || !isString(val)) return;\n val = val.trim();\n\n const preValue = this._getPreValue();\n this._url.hostname = val;\n\n if (this._checkUrlChange(preValue)) this._recordHistory();\n }\n\n get port() {\n return this._url.port;\n }\n\n set port(val: string) {\n const xVal = Number((val = val.trim()));\n if (!isNumber(xVal) || xVal <= 0) return;\n\n const preValue = this._getPreValue();\n this._url.port = val;\n\n if (this._checkUrlChange(preValue)) this._recordHistory();\n }\n\n get pathname() {\n return this._url.pathname;\n }\n\n set pathname(val: string) {\n if (!val || !isString(val)) return;\n val = val.trim();\n\n const preValue = this._getPreValue();\n this._url.pathname = val;\n\n if (this._checkUrlChange(preValue)) this._recordHistory();\n }\n\n get search() {\n return this._url.search;\n }\n\n set search(val: string) {\n if (!val || !isString(val)) return;\n val = val.trim();\n val = val.startsWith('?') ? val : `?${val}`;\n\n const preValue = this._getPreValue();\n this._url.search = val;\n\n if (this._checkUrlChange(preValue)) this._recordHistory();\n }\n\n get hash() {\n return this._url.hash;\n }\n\n // 小程序的navigateTo存在截断hash字符串的问题\n set hash(val: string) {\n if (!val || !isString(val)) return;\n val = val.trim();\n val = val.startsWith('#') ? val : `#${val}`;\n\n const preValue = this._getPreValue();\n this._url.hash = val;\n\n if (this._checkUrlChange(preValue)) this._recordHistory();\n }\n\n get href() {\n return this._url.href;\n }\n\n set href(val: string) {\n const REG = /^(http:|https:)?\\/\\/.+/;\n if (!val || !isString(val) || !REG.test((val = val.trim()))) return;\n\n const preValue = this._getPreValue();\n this._url.href = val;\n\n if (this._checkUrlChange(preValue)) this._recordHistory();\n }\n\n get origin() {\n return this._url.origin;\n }\n\n set origin(val: string) {\n const REG = /^(http:|https:)?\\/\\/.+/;\n if (!val || !isString(val) || !REG.test((val = val.trim()))) return;\n\n const preValue = this._getPreValue();\n this._url.origin = val;\n\n if (this._checkUrlChange(preValue)) this._recordHistory();\n }\n\n /* public method */\n assign() {\n warn(true, '小程序环境中调用location.assign()无效.');\n }\n\n reload() {\n warn(true, '小程序环境中调用location.reload()无效.');\n }\n\n replace(url: string) {\n this.trigger('__set_href_without_history__', url);\n }\n\n toString() {\n return this.href;\n }\n\n // For debug\n get cache() {\n return cache;\n }\n}\n\nexport type { TaroLocation };\nexport const Location: typeof TaroLocation = process.env.TARO_PLATFORM === 'web' ? env.window.Location : TaroLocation;\n\nfunction generateFullUrl(val = '') {\n const origin = INIT_URL;\n if (/^[/?#]/.test(val)) {\n return origin + val;\n }\n return val;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"location.js","names":[],"sources":["../../src/bom/location.ts"],"sourcesContent":["import { isNumber, isString, warn } from '@spcsn/taro-shared';\n\nimport { CONTEXT_ACTIONS } from '../constants';\nimport { getCurrentInstance } from '../current';\nimport { Events } from '../emitter/emitter';\nimport { RuntimeCache } from '../utils/cache';\nimport { TaroURLProvider } from './url';\n\ntype PreValue = ReturnType<typeof TaroURLProvider.prototype._toRaw>;\n\ntype Options = {\n window: any;\n};\ntype LocationContext = {\n lastHref: string;\n};\n\nconst INIT_URL = 'https://taro.com';\nconst cache = new RuntimeCache<LocationContext>('location');\n\nclass TaroLocation extends Events {\n /* private property */\n #url = new TaroURLProvider(INIT_URL);\n #noCheckUrl = false;\n #window: any;\n\n constructor(options: Options) {\n super();\n\n this.#window = options.window;\n\n this.#reset();\n\n this.on(\n '__set_href_without_history__',\n (href: string) => {\n this.#noCheckUrl = true;\n\n const lastHash = this.#url.hash;\n this.#url.href = generateFullUrl(href);\n\n if (lastHash !== this.#url.hash) {\n this.#window.trigger('hashchange');\n }\n\n this.#noCheckUrl = false;\n },\n null,\n );\n\n // 切换上下文行为\n this.on(\n CONTEXT_ACTIONS.INIT,\n () => {\n this.#reset();\n },\n null,\n );\n\n this.on(\n CONTEXT_ACTIONS.RESTORE,\n (pageId: string) => {\n cache.set(pageId, {\n lastHref: this.href,\n });\n },\n null,\n );\n\n this.on(\n CONTEXT_ACTIONS.RECOVER,\n (pageId: string) => {\n // 数据恢复时,不需要执行跳转\n if (cache.has(pageId)) {\n const ctx = cache.get(pageId)!;\n this.#noCheckUrl = true;\n this.#url.href = ctx.lastHref;\n this.#noCheckUrl = false;\n }\n },\n null,\n );\n\n this.on(\n CONTEXT_ACTIONS.DESTROY,\n (pageId: string) => {\n cache.delete(pageId);\n },\n null,\n );\n }\n\n /* private method */\n #reset() {\n const Current = getCurrentInstance();\n const router = Current.router;\n if (router) {\n const { path, params } = router;\n const searchArr = Object.keys(params).map((key) => {\n return `${key}=${params[key]}`;\n });\n const searchStr = searchArr.length > 0 ? '?' + searchArr.join('&') : '';\n const url = `${INIT_URL}${path.startsWith('/') ? path : '/' + path}${searchStr}`;\n\n this.#url = new TaroURLProvider(url);\n\n this.trigger('__reset_history__', this.href);\n }\n }\n\n #getPreValue(): PreValue {\n return this.#url._toRaw();\n }\n\n #rollBack(href: string) {\n this.#url.href = href;\n }\n\n #recordHistory() {\n this.trigger('__record_history__', this.href);\n }\n\n /**\n * 校验url的变化,是否需要更新history\n */\n #checkUrlChange(preValue: PreValue): boolean {\n if (this.#noCheckUrl) {\n return false;\n }\n\n const { protocol, hostname, port, pathname, search, hash } = this.#url._toRaw();\n\n // 跨域三要素不允许修改\n if (protocol !== preValue.protocol || hostname !== preValue.hostname || port !== preValue.port) {\n this.#rollBack(preValue.href);\n return false;\n }\n\n // pathname\n if (pathname !== preValue.pathname) {\n return true;\n }\n\n // search\n if (search !== preValue.search) {\n return true;\n }\n\n // hashchange\n if (hash !== preValue.hash) {\n this.#window.trigger('hashchange');\n return true;\n }\n\n this.#rollBack(preValue.href);\n return false;\n }\n\n /* public property */\n get protocol() {\n return this.#url.protocol;\n }\n\n set protocol(val: string) {\n const REG = /^(http|https):$/i;\n if (!val || !isString(val) || !REG.test(val.trim())) return;\n\n val = val.trim();\n const preValue = this.#getPreValue();\n this.#url.protocol = val;\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory();\n }\n\n get host() {\n return this.#url.host;\n }\n\n set host(val: string) {\n if (!val || !isString(val)) return;\n val = val.trim();\n\n const preValue = this.#getPreValue();\n this.#url.host = val;\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory();\n }\n\n get hostname() {\n return this.#url.hostname;\n }\n\n set hostname(val: string) {\n if (!val || !isString(val)) return;\n val = val.trim();\n\n const preValue = this.#getPreValue();\n this.#url.hostname = val;\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory();\n }\n\n get port() {\n return this.#url.port;\n }\n\n set port(val: string) {\n const xVal = Number((val = val.trim()));\n if (!isNumber(xVal) || xVal <= 0) return;\n\n const preValue = this.#getPreValue();\n this.#url.port = val;\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory();\n }\n\n get pathname() {\n return this.#url.pathname;\n }\n\n set pathname(val: string) {\n if (!val || !isString(val)) return;\n val = val.trim();\n\n const preValue = this.#getPreValue();\n this.#url.pathname = val;\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory();\n }\n\n get search() {\n return this.#url.search;\n }\n\n set search(val: string) {\n if (!val || !isString(val)) return;\n val = val.trim();\n val = val.startsWith('?') ? val : `?${val}`;\n\n const preValue = this.#getPreValue();\n this.#url.search = val;\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory();\n }\n\n get hash() {\n return this.#url.hash;\n }\n\n // 小程序的navigateTo存在截断hash字符串的问题\n set hash(val: string) {\n if (!val || !isString(val)) return;\n val = val.trim();\n val = val.startsWith('#') ? val : `#${val}`;\n\n const preValue = this.#getPreValue();\n this.#url.hash = val;\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory();\n }\n\n get href() {\n return this.#url.href;\n }\n\n set href(val: string) {\n const REG = /^(http:|https:)?\\/\\/.+/;\n if (!val || !isString(val) || !REG.test((val = val.trim()))) return;\n\n const preValue = this.#getPreValue();\n this.#url.href = val;\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory();\n }\n\n get origin() {\n return this.#url.origin;\n }\n\n set origin(val: string) {\n const REG = /^(http:|https:)?\\/\\/.+/;\n if (!val || !isString(val) || !REG.test((val = val.trim()))) return;\n\n const preValue = this.#getPreValue();\n this.#url.origin = val;\n\n if (this.#checkUrlChange(preValue)) this.#recordHistory();\n }\n\n /* public method */\n assign() {\n warn(true, '小程序环境中调用location.assign()无效.');\n }\n\n reload() {\n warn(true, '小程序环境中调用location.reload()无效.');\n }\n\n replace(url: string) {\n this.trigger('__set_href_without_history__', url);\n }\n\n toString() {\n return this.href;\n }\n\n // For debug\n get cache() {\n return cache;\n }\n}\n\nexport type { TaroLocation };\nexport const Location: typeof TaroLocation = TaroLocation;\n\nfunction generateFullUrl(val = '') {\n const origin = INIT_URL;\n if (/^[/?#]/.test(val)) {\n return origin + val;\n }\n return val;\n}\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
- import env from "../env.js";
2
1
  //#region src/bom/navigator.ts
3
2
  const msg = "(Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/534.36 (KHTML, like Gecko) NodeJS/v4.1.0 Chrome/76.0.3809.132 Safari/534.36";
4
- const nav = process.env.TARO_PLATFORM === "web" ? env.window.navigator : {
3
+ const nav = {
5
4
  appCodeName: "Mozilla",
6
5
  appName: "Netscape",
7
6
  appVersion: "5.0 " + msg,
@@ -1 +1 @@
1
- {"version":3,"file":"navigator.js","names":[],"sources":["../../src/bom/navigator.ts"],"sourcesContent":["import env from '../env';\n\nconst machine = 'Macintosh';\nconst arch = 'Intel Mac OS X 10_14_5';\nconst engine = 'AppleWebKit/534.36 (KHTML, like Gecko) NodeJS/v4.1.0 Chrome/76.0.3809.132 Safari/534.36';\n\nconst msg = '(' + machine + '; ' + arch + ') ' + engine;\n\nexport const nav: typeof window.navigator =\n process.env.TARO_PLATFORM === 'web'\n ? env.window.navigator\n : {\n appCodeName: 'Mozilla',\n appName: 'Netscape',\n appVersion: '5.0 ' + msg,\n cookieEnabled: true,\n mimeTypes: [],\n onLine: true,\n platform: 'MacIntel',\n plugins: [],\n product: 'Taro',\n productSub: '20030107',\n userAgent: 'Mozilla/5.0 ' + msg,\n vendor: 'Joyent',\n vendorSub: '',\n };\n"],"mappings":";;AAMA,MAAM,MAAM;AAEZ,MAAa,MACX,QAAQ,IAAI,kBAAkB,QAC1B,IAAI,OAAO,YACX;CACE,aAAa;CACb,SAAS;CACT,YAAY,SAAS;CACrB,eAAe;CACf,WAAW,CAAC;CACZ,QAAQ;CACR,UAAU;CACV,SAAS,CAAC;CACV,SAAS;CACT,YAAY;CACZ,WAAW,iBAAiB;CAC5B,QAAQ;CACR,WAAW;AACb"}
1
+ {"version":3,"file":"navigator.js","names":[],"sources":["../../src/bom/navigator.ts"],"sourcesContent":["const machine = 'Macintosh';\nconst arch = 'Intel Mac OS X 10_14_5';\nconst engine = 'AppleWebKit/534.36 (KHTML, like Gecko) NodeJS/v4.1.0 Chrome/76.0.3809.132 Safari/534.36';\n\nconst msg = '(' + machine + '; ' + arch + ') ' + engine;\n\nexport const nav: typeof window.navigator = {\n appCodeName: 'Mozilla',\n appName: 'Netscape',\n appVersion: '5.0 ' + msg,\n cookieEnabled: true,\n mimeTypes: [],\n onLine: true,\n platform: 'MacIntel',\n plugins: [],\n product: 'Taro',\n productSub: '20030107',\n userAgent: 'Mozilla/5.0 ' + msg,\n vendor: 'Joyent',\n vendorSub: '',\n};\n"],"mappings":";AAIA,MAAM,MAAM;AAEZ,MAAa,MAA+B;CAC1C,aAAa;CACb,SAAS;CACT,YAAY,SAAS;CACrB,eAAe;CACf,WAAW,CAAC;CACZ,QAAQ;CACR,UAAU;CACV,SAAS,CAAC;CACV,SAAS;CACT,YAAY;CACZ,WAAW,iBAAiB;CAC5B,QAAQ;CACR,WAAW;AACb"}
package/dist/bom/raf.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export declare let now: () => number;
2
- declare const _raf: typeof requestAnimationFrame | ((callback: any) => NodeJS.Timeout);
3
- declare const _caf: typeof cancelAnimationFrame;
2
+ declare const _raf: (callback: any) => NodeJS.Timeout;
3
+ declare const _caf: (seed: any) => void;
4
4
  export { _caf as caf, _raf as raf };
package/dist/bom/raf.js CHANGED
@@ -12,14 +12,14 @@ let now;
12
12
  }
13
13
  })();
14
14
  let lastTime = 0;
15
- const _raf = process.env.TARO_PLATFORM === "web" ? requestAnimationFrame : function(callback) {
15
+ const _raf = function(callback) {
16
16
  const _now = now();
17
17
  const nextTime = Math.max(lastTime + 16, _now);
18
18
  return setTimeout(function() {
19
19
  callback(lastTime = nextTime);
20
20
  }, nextTime - _now);
21
21
  };
22
- const _caf = process.env.TARO_PLATFORM === "web" ? cancelAnimationFrame : function(seed) {
22
+ const _caf = function(seed) {
23
23
  clearTimeout(seed);
24
24
  };
25
25
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"raf.js","names":[],"sources":["../../src/bom/raf.ts"],"sourcesContent":["// https://github.com/myrne/performance-now\nexport let now: () => number;\n\n(function () {\n let loadTime;\n if (typeof performance !== 'undefined' && performance !== null && performance.now) {\n now = () => performance.now();\n } else if (Date.now) {\n loadTime = Date.now();\n now = () => Date.now() - loadTime;\n } else {\n loadTime = new Date().getTime();\n now = () => new Date().getTime() - loadTime;\n }\n})();\n\nlet lastTime = 0;\n\n// https://gist.github.com/paulirish/1579671\n// https://gist.github.com/jalbam/5fe05443270fa6d8136238ec72accbc0\nconst _raf =\n process.env.TARO_PLATFORM === 'web'\n ? requestAnimationFrame\n : function (callback) {\n const _now = now();\n const nextTime = Math.max(lastTime + 16, _now); // First time will execute it immediately but barely noticeable and performance is gained.\n return setTimeout(function () {\n callback((lastTime = nextTime));\n }, nextTime - _now);\n };\n\nconst _caf =\n process.env.TARO_PLATFORM === 'web'\n ? cancelAnimationFrame\n : function (seed) {\n // fix https://github.com/NervJS/taro/issues/7749\n clearTimeout(seed);\n };\n\nexport { _caf as caf, _raf as raf };\n"],"mappings":";AACA,IAAW;CAEV,WAAY;CACX,IAAI;CACJ,IAAI,OAAO,gBAAgB,eAAe,gBAAgB,QAAQ,YAAY,KAC5E,YAAY,YAAY,IAAI;MACvB,IAAI,KAAK,KAAK;EACnB,WAAW,KAAK,IAAI;EACpB,YAAY,KAAK,IAAI,IAAI;CAC3B,OAAO;EACL,4BAAW,IAAI,KAAK,GAAE,QAAQ;EAC9B,6BAAY,IAAI,KAAK,GAAE,QAAQ,IAAI;CACrC;AACF,GAAG;AAEH,IAAI,WAAW;AAIf,MAAM,OACJ,QAAQ,IAAI,kBAAkB,QAC1B,wBACA,SAAU,UAAU;CAClB,MAAM,OAAO,IAAI;CACjB,MAAM,WAAW,KAAK,IAAI,WAAW,IAAI,IAAI;CAC7C,OAAO,WAAW,WAAY;EAC5B,SAAU,WAAW,QAAS;CAChC,GAAG,WAAW,IAAI;AACpB;AAEN,MAAM,OACJ,QAAQ,IAAI,kBAAkB,QAC1B,uBACA,SAAU,MAAM;CAEd,aAAa,IAAI;AACnB"}
1
+ {"version":3,"file":"raf.js","names":[],"sources":["../../src/bom/raf.ts"],"sourcesContent":["// https://github.com/myrne/performance-now\nexport let now: () => number;\n\n(function () {\n let loadTime;\n if (typeof performance !== 'undefined' && performance !== null && performance.now) {\n now = () => performance.now();\n } else if (Date.now) {\n loadTime = Date.now();\n now = () => Date.now() - loadTime;\n } else {\n loadTime = new Date().getTime();\n now = () => new Date().getTime() - loadTime;\n }\n})();\n\nlet lastTime = 0;\n\n// https://gist.github.com/paulirish/1579671\n// https://gist.github.com/jalbam/5fe05443270fa6d8136238ec72accbc0\nconst _raf = function (callback) {\n const _now = now();\n const nextTime = Math.max(lastTime + 16, _now); // First time will execute it immediately but barely noticeable and performance is gained.\n return setTimeout(function () {\n callback((lastTime = nextTime));\n }, nextTime - _now);\n};\n\nconst _caf = function (seed) {\n // fix https://github.com/NervJS/taro/issues/7749\n clearTimeout(seed);\n};\n\nexport { _caf as caf, _raf as raf };\n"],"mappings":";AACA,IAAW;CAEV,WAAY;CACX,IAAI;CACJ,IAAI,OAAO,gBAAgB,eAAe,gBAAgB,QAAQ,YAAY,KAC5E,YAAY,YAAY,IAAI;MACvB,IAAI,KAAK,KAAK;EACnB,WAAW,KAAK,IAAI;EACpB,YAAY,KAAK,IAAI,IAAI;CAC3B,OAAO;EACL,4BAAW,IAAI,KAAK,GAAE,QAAQ;EAC9B,6BAAY,IAAI,KAAK,GAAE,QAAQ,IAAI;CACrC;AACF,GAAG;AAEH,IAAI,WAAW;AAIf,MAAM,OAAO,SAAU,UAAU;CAC/B,MAAM,OAAO,IAAI;CACjB,MAAM,WAAW,KAAK,IAAI,WAAW,IAAI,IAAI;CAC7C,OAAO,WAAW,WAAY;EAC5B,SAAU,WAAW,QAAS;CAChC,GAAG,WAAW,IAAI;AACpB;AAEA,MAAM,OAAO,SAAU,MAAM;CAE3B,aAAa,IAAI;AACnB"}
@@ -0,0 +1,14 @@
1
+ export declare class URLSearchParams {
2
+ #private;
3
+ constructor(query: any);
4
+ append(name: string, value: string): void;
5
+ delete(name: string): void;
6
+ get(name: string): any;
7
+ getAll(name: string): any;
8
+ has(name: string): boolean;
9
+ keys(): string[];
10
+ set(name: string, value: string): void;
11
+ forEach(callback: any, thisArg: any): void;
12
+ toJSON(): {};
13
+ toString(): string;
14
+ }