@spcsn/taro-runtime 0.1.2 → 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 (85) hide show
  1. package/README.md +16 -39
  2. package/dist/bom/{URL.js → URL2.js} +3 -4
  3. package/dist/bom/URL2.js.map +1 -0
  4. package/dist/bom/document.d.ts +0 -1
  5. package/dist/bom/document.js +1 -55
  6. package/dist/bom/document.js.map +1 -1
  7. package/dist/bom/get-computed-style.js +8 -0
  8. package/dist/bom/get-computed-style.js.map +1 -0
  9. package/dist/bom/history.js +1 -2
  10. package/dist/bom/history.js.map +1 -1
  11. package/dist/bom/location.js +2 -3
  12. package/dist/bom/location.js.map +1 -1
  13. package/dist/bom/navigator.js +1 -2
  14. package/dist/bom/navigator.js.map +1 -1
  15. package/dist/bom/raf.d.ts +2 -2
  16. package/dist/bom/raf.js +2 -2
  17. package/dist/bom/raf.js.map +1 -1
  18. package/dist/bom/url-search-params.d.ts +14 -0
  19. package/dist/bom/{URLSearchParams.js → url-search-params.js} +12 -15
  20. package/dist/bom/url-search-params.js.map +1 -0
  21. package/dist/bom/{URL.d.ts → url.d.ts} +1 -0
  22. package/dist/bom/url.js +196 -0
  23. package/dist/bom/url.js.map +1 -0
  24. package/dist/bom/window.d.ts +3 -3
  25. package/dist/bom/window.js +2 -2
  26. package/dist/bom/window.js.map +1 -1
  27. package/dist/current.d.ts +3 -0
  28. package/dist/current.js +10 -1
  29. package/dist/current.js.map +1 -1
  30. package/dist/dom/anchor-element.js +1 -1
  31. package/dist/dom/class-list.js +2 -1
  32. package/dist/dom/class-list.js.map +1 -1
  33. package/dist/dom/document.js.map +1 -1
  34. package/dist/dom/element.js +7 -7
  35. package/dist/dom/element.js.map +1 -1
  36. package/dist/dom/event.d.ts +1 -1
  37. package/dist/dom/event.js +3 -13
  38. package/dist/dom/event.js.map +1 -1
  39. package/dist/dom/form.js +1 -1
  40. package/dist/dom/form.js.map +1 -1
  41. package/dist/dom/node.d.ts +4 -3
  42. package/dist/dom/node.js +14 -7
  43. package/dist/dom/node.js.map +1 -1
  44. package/dist/dom/root.js +2 -2
  45. package/dist/dom/root.js.map +1 -1
  46. package/dist/dom/{style_properties.js → style-properties.js} +2 -2
  47. package/dist/dom/{style_properties.js.map → style-properties.js.map} +1 -1
  48. package/dist/dom/style.js +1 -1
  49. package/dist/dom/style.js.map +1 -1
  50. package/dist/dom/text.d.ts +1 -1
  51. package/dist/dom/text.js.map +1 -1
  52. package/dist/dom/tree.js.map +1 -1
  53. package/dist/dsl/common.js +26 -47
  54. package/dist/dsl/common.js.map +1 -1
  55. package/dist/env.js +2 -2
  56. package/dist/env.js.map +1 -1
  57. package/dist/hydrate.js +1 -1
  58. package/dist/hydrate.js.map +1 -1
  59. package/dist/index.cjs.d.ts +4 -4
  60. package/dist/index.cjs.js +331 -708
  61. package/dist/index.cjs.js.map +1 -1
  62. package/dist/index.d.ts +4 -4
  63. package/dist/index.js +6 -6
  64. package/dist/next-tick.js +1 -6
  65. package/dist/next-tick.js.map +1 -1
  66. package/dist/perf.js +1 -1
  67. package/dist/perf.js.map +1 -1
  68. package/dist/polyfill/index.js +1 -6
  69. package/dist/polyfill/index.js.map +1 -1
  70. package/dist/runtime.esm.d.ts +4 -4
  71. package/dist/runtime.esm.js +330 -708
  72. package/dist/runtime.esm.js.map +1 -1
  73. package/dist/utils/index.js.map +1 -1
  74. package/package.json +26 -20
  75. package/LICENSE +0 -174
  76. package/dist/bom/URL.js.map +0 -1
  77. package/dist/bom/URLSearchParams.d.ts +0 -1
  78. package/dist/bom/URLSearchParams.js.map +0 -1
  79. package/dist/bom/getComputedStyle.js +0 -9
  80. package/dist/bom/getComputedStyle.js.map +0 -1
  81. package/dist/polyfill/intersection-observer.js +0 -494
  82. package/dist/polyfill/intersection-observer.js.map +0 -1
  83. /package/dist/bom/{getComputedStyle.d.ts → get-computed-style.d.ts} +0 -0
  84. /package/dist/dom/{node_types.d.ts → node-types.d.ts} +0 -0
  85. /package/dist/dom/{style_properties.d.ts → style-properties.d.ts} +0 -0
package/README.md CHANGED
@@ -1,49 +1,26 @@
1
1
  # `@spcsn/taro-runtime`
2
2
 
3
- Taro 运行时。在小程序端连接框架(DSL)渲染机制到小程序渲染机制,连接小程序路由和生命周期到框架对应的生命周期。在 H5/RN 端连接小程序生命周期**规范**到框架生命周期。
3
+ `@spcsn/taro-runtime` 是小程序运行时基础包,负责连接 React 渲染结果、小程序生命周期、页面配置和 DOM-like 抽象。
4
4
 
5
- ## 核心 API
5
+ ## 包定位
6
6
 
7
- ### createReactApp()
7
+ - 内部实现包,不是业务侧显式安装入口。
8
+ - 被 `@spcsn/taro` 和 `@spcsn/taro-mini-runner` 直接依赖。
9
+ - 当前仍需要独立发布,因为构建产物会生成对 `@spcsn/taro-runtime` 的运行时代码引用。
8
10
 
9
- 暴露给 `@tarojs/taro-loader/app` 调用,在小程序入口文件中调用,创建一个小程序 `App` 构造函数接受的小程序应用规范对象。
11
+ ## 核心能力
10
12
 
13
+ - `createReactApp()`: 创建小程序 `App` 构造函数可接收的应用配置对象。
14
+ - `createPageConfig()`: 创建小程序 `Page` 构造函数可接收的页面配置对象。
15
+ - `window`、`document`、`navigator`: 小程序端 DOM-like / BOM-like 兼容对象。
16
+ - `Current`: 当前应用、页面和路由上下文。
17
+ - `eventCenter`、`Events`: Taro 事件机制。
18
+ - `options`: 运行时配置,例如 `debug` 与 `prerender`。
11
19
 
12
- ### createVueApp()
20
+ ## 支持范围
13
21
 
14
- 暴露给 `@tarojs/taro-loader/app` 调用,在小程序入口文件中调用,创建一个小程序 `App` 构造函数接受的小程序应用规范对象。
22
+ 当前只维护 React 开发 WeApp 小程序运行时。H5、React Native、Vue 和 Webpack 相关描述均不再作为维护目标。
15
23
 
16
- ### createPageConfig()
24
+ ## 收敛说明
17
25
 
18
- 暴露给 `@tarojs/taro-loader/page` 调用,在小程序页面文件中调用,创建一个小程序 `Page` 构造函数接受的小程序页面规范对象。
19
-
20
- ### window
21
-
22
- 在小程序端模仿浏览器的 `window` 实现的对象,在浏览器环境中返回浏览器本身的 `window`。此对象通过 Webpack 的 [ProvidePlugin](https://webpack.js.org/plugins/provide-plugin/) 注入到全局对象以供第三方库调用。
23
-
24
- ### navigator
25
-
26
- 在小程序端模仿浏览器的 `navigator` 实现的对象,在浏览器环境中返回浏览器本身的 `navigator`。此对象通过 Webpack 的 [ProvidePlugin](https://webpack.js.org/plugins/provide-plugin/) 注入到全局对象以供第三方库调用。
27
-
28
- ### document
29
-
30
- 在小程序端模仿浏览器的 `document` 实现的对象,在浏览器环境中返回浏览器本身的 `document`。此对象通过 Webpack 的 [ProvidePlugin](https://webpack.js.org/plugins/provide-plugin/) 注入到全局对象以供第三方库调用。
31
-
32
- ### Current
33
-
34
- 暴露给开发者的 Taro 全局变量,目前有三个属性:
35
-
36
- * `Current.app`,返回当前小程序应用实例,非小程序端返回小程序规范应用实例,可通过此实例调用小程序规范生命周期。
37
- * `Current.page`,返回当前小程序页面实例,非小程序端返回小程序规范页面实例,可通过此实例调用小程序规范生命周期。
38
- * `Current.router`,返回当前小程序路由信息,非小程序端返回小程序规范路由信息
39
-
40
- ### options
41
-
42
- Taro 配置:
43
-
44
- * `debug`: 开启之后会打印渲染时间
45
- * `prerender`: 暴露给 `@spcsn/taro-cli` 的内部参数
46
-
47
- ### Events
48
-
49
- [Taro 消息机制](https://docs.taro.zone/docs/apis/about/events)。
26
+ 后续如果要把本包并入 `@spcsn/taro`,需要先保证 runner 生成代码不再直接引用 `@spcsn/taro-runtime` 包名,或确保该引用可以稳定解析到公开入口包内置产物。
@@ -1,8 +1,7 @@
1
- import env from "../env.js";
2
1
  import { _classPrivateFieldInitSpec } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldInitSpec.js";
3
2
  import { _classPrivateFieldSet2 } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldSet2.js";
4
3
  import { _classPrivateFieldGet2 } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldGet2.js";
5
- import { URLSearchParams } from "./URLSearchParams.js";
4
+ import { URLSearchParams } from "./url-search-params.js";
6
5
  import { isString, isUndefined } from "@spcsn/taro-shared";
7
6
  //#region src/bom/URL.ts
8
7
  var _hash = /* @__PURE__ */ new WeakMap();
@@ -146,7 +145,7 @@ var TaroURL = class {
146
145
  };
147
146
  }
148
147
  };
149
- const TaroURLProvider = process.env.TARO_PLATFORM === "web" ? env.window.URL : TaroURL;
148
+ const TaroURLProvider = TaroURL;
150
149
  function parseUrl(url = "") {
151
150
  const result = {
152
151
  href: "",
@@ -194,4 +193,4 @@ function parseUrlBase(url, base) {
194
193
  //#endregion
195
194
  export { TaroURLProvider, parseUrl };
196
195
 
197
- //# sourceMappingURL=URL.js.map
196
+ //# sourceMappingURL=URL2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"URL2.js","names":[],"sources":["../../src/bom/URL.ts"],"sourcesContent":["import { isString, isUndefined } from '@spcsn/taro-shared';\n\nimport { URLSearchParams } from './url-search-params';\n\nclass TaroURL {\n static createObjectURL() {\n throw new Error('Oops, not support URL.createObjectURL() in miniprogram.');\n }\n\n static revokeObjectURL() {\n throw new Error('Oops, not support URL.revokeObjectURL() in miniprogram.');\n }\n\n /* private property */\n #hash = '';\n #hostname = '';\n #pathname = '';\n #port = '';\n #protocol = '';\n #search: URLSearchParams;\n\n constructor(url: string, base?: string) {\n if (!isString(url)) url = String(url);\n\n const parseResult = parseUrlBase(url, base);\n const { hash, hostname, pathname, port, protocol, search } = parseResult;\n\n this.#hash = hash;\n this.#hostname = hostname;\n this.#pathname = pathname || '/';\n this.#port = port;\n this.#protocol = protocol;\n this.#search = new URLSearchParams(search);\n }\n\n /* public property */\n get protocol() {\n return this.#protocol;\n }\n\n set protocol(val: string) {\n isString(val) && (this.#protocol = val.trim());\n }\n\n get host() {\n return this.hostname + (this.port ? ':' + this.port : '');\n }\n\n set host(val: string) {\n if (val && isString(val)) {\n val = val.trim();\n const { hostname, port } = parseUrl(`//${val}`);\n this.hostname = hostname;\n this.port = port;\n }\n }\n\n get hostname() {\n return this.#hostname;\n }\n\n set hostname(val: string) {\n val && isString(val) && (this.#hostname = val.trim());\n }\n\n get port() {\n return this.#port;\n }\n\n set port(val: string) {\n isString(val) && (this.#port = val.trim());\n }\n\n get pathname() {\n return this.#pathname;\n }\n\n set pathname(val: string) {\n if (isString(val)) {\n val = val.trim();\n const HEAD_REG = /^(\\/|\\.\\/|\\.\\.\\/)/;\n let temp = val;\n while (HEAD_REG.test(temp)) {\n temp = temp.replace(HEAD_REG, '');\n }\n if (temp) this.#pathname = '/' + temp;\n else this.#pathname = '/';\n }\n }\n\n get search() {\n const val = this.#search.toString();\n return val.length === 0 || val.startsWith('?') ? val : `?${val}`;\n }\n\n set search(val: string) {\n if (isString(val)) {\n val = val.trim();\n this.#search = new URLSearchParams(val);\n }\n }\n\n get hash() {\n return this.#hash;\n }\n\n set hash(val: string) {\n if (isString(val)) {\n val = val.trim();\n if (val) this.#hash = val.startsWith('#') ? val : `#${val}`;\n else this.#hash = '';\n }\n }\n\n get href() {\n return `${this.protocol}//${this.host}${this.pathname}${this.search}${this.hash}`;\n }\n\n set href(val: string) {\n if (val && isString(val)) {\n val = val.trim();\n const { protocol, hostname, port, hash, search, pathname } = parseUrl(val);\n this.protocol = protocol;\n this.hostname = hostname;\n this.pathname = pathname;\n this.port = port;\n this.hash = hash;\n this.search = search;\n }\n }\n\n get origin() {\n return `${this.protocol}//${this.host}`;\n }\n\n set origin(val: string) {\n if (val && isString(val)) {\n val = val.trim();\n const { protocol, hostname, port } = parseUrl(val);\n this.protocol = protocol;\n this.hostname = hostname;\n this.port = port;\n }\n }\n\n get searchParams() {\n return this.#search;\n }\n\n // public method\n toString() {\n return this.href;\n }\n\n toJSON() {\n return this.toString();\n }\n\n // convenient for deconstructor\n _toRaw() {\n return {\n protocol: this.protocol,\n port: this.port,\n host: this.host,\n hostname: this.hostname,\n pathname: this.pathname,\n hash: this.hash,\n search: this.search,\n origin: this.origin,\n href: this.href,\n };\n }\n}\n\nexport type { TaroURL };\n\n// Note: 小程序端 vite 打包成 commonjs,const URL = xxx 会报错,所以把 URL 改为 TaroURLProvider\nexport const TaroURLProvider: typeof TaroURL = TaroURL;\n\nexport function parseUrl(url = '') {\n const result = {\n href: '',\n origin: '',\n protocol: '',\n hostname: '',\n host: '',\n port: '',\n pathname: '',\n search: '',\n hash: '',\n };\n if (!url || !isString(url)) return result;\n\n url = url.trim();\n const PATTERN = /^(([^:/?#]+):)?\\/\\/(([^/?#]+):(.+)@)?([^/?#:]*)(:(\\d+))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n const matches = url.match(PATTERN);\n\n if (!matches) return result;\n\n // TODO: username & password ?\n result.protocol = matches[1] || 'https:';\n result.hostname = matches[6] || 'taro.com';\n result.port = matches[8] || '';\n result.pathname = matches[9] || '/';\n result.search = matches[10] || '';\n result.hash = matches[12] || '';\n result.href = url;\n result.origin = result.protocol + '//' + result.hostname + (result.port ? `:${result.port}` : '');\n result.host = result.hostname + (result.port ? `:${result.port}` : '');\n\n return result;\n}\n\nfunction parseUrlBase(url: string, base?: string) {\n const VALID_URL = /^(https?:)\\/\\//i;\n\n let fullUrl = '';\n let parsedBase: ReturnType<typeof parseUrl> | null = null;\n\n if (!isUndefined(base)) {\n base = String(base).trim();\n if (!VALID_URL.test(base)) throw new TypeError(`Failed to construct 'URL': Invalid base URL`);\n parsedBase = parseUrl(base);\n }\n\n url = String(url).trim();\n\n if (VALID_URL.test(url)) {\n fullUrl = url;\n } else if (parsedBase) {\n if (url) {\n if (url.startsWith('//')) {\n fullUrl = parsedBase.protocol + url;\n } else {\n fullUrl = parsedBase.origin + (url.startsWith('/') ? url : `/${url}`);\n }\n } else {\n fullUrl = parsedBase.href;\n }\n } else {\n throw new TypeError(`Failed to construct 'URL': Invalid URL`);\n }\n\n return parseUrl(fullUrl);\n}\n"],"mappings":"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"}
@@ -1,3 +1,2 @@
1
1
  import { TaroDocument } from '../dom/document';
2
- export declare function createTTDomDocument(): TaroDocument;
3
2
  export declare const taroDocumentProvider: TaroDocument;
@@ -1,7 +1,6 @@
1
1
  import { BODY, CONTAINER, HEAD, HTML } from "../constants/index.js";
2
2
  import env from "../env.js";
3
3
  import { TaroDocument } from "../dom/document.js";
4
- import { DEFAULT_COMPONENTS, TT_SPECIFIC_COMPONENTS, isEnableTTDom } from "@spcsn/taro-shared";
5
4
  //#region src/bom/document.ts
6
5
  function createDocument() {
7
6
  /**
@@ -34,60 +33,7 @@ function createDocument() {
34
33
  doc.body = body;
35
34
  return doc;
36
35
  }
37
- function createTTDomDocument() {
38
- var _tt$getBuiltInCompone;
39
- const document = tt === null || tt === void 0 ? void 0 : tt.appDocument;
40
- if (!document) throw new Error("tt.appDocument is not found");
41
- const html = document.createElement(HTML);
42
- const head = document.createElement(HEAD);
43
- const body = document.createElement(BODY);
44
- const app = document.createElement("app");
45
- app.id = "app";
46
- const container = document.createElement(CONTAINER);
47
- const emptyFunction = () => {};
48
- document.childNodes.push(html);
49
- html.childNodes.push(head, body);
50
- body.childNodes.push(container);
51
- container.childNodes.push(app);
52
- document.documentElement = html;
53
- document.head = head;
54
- document.body = body;
55
- document.appElement = app;
56
- let builtInComponents = tt === null || tt === void 0 || (_tt$getBuiltInCompone = tt.getBuiltInComponents) === null || _tt$getBuiltInCompone === void 0 ? void 0 : _tt$getBuiltInCompone.call(tt);
57
- if (Array.isArray(builtInComponents)) builtInComponents = new Set(builtInComponents);
58
- else if (!(builtInComponents instanceof Set)) builtInComponents = new Set([...DEFAULT_COMPONENTS, ...TT_SPECIFIC_COMPONENTS]);
59
- document.getElementById = function getElementById(id) {
60
- if (id === "app") return app;
61
- else return Object.getPrototypeOf(this).getElementById.call(this, id);
62
- };
63
- document.getLastPage = function getLastPage() {
64
- let last;
65
- for (const v of this._pageDocumentMap.values()) last = v;
66
- return last;
67
- };
68
- document.createElement = function(type, ...args) {
69
- if (type === "root") return this.getLastPage();
70
- else {
71
- const el = builtInComponents.has(type) ? Object.getPrototypeOf(this).createElement.call(this, type, ...args) : Object.getPrototypeOf(this).createNativeComponent.call(this, type, { __tt__inner__options__: { name: type } });
72
- el.setAttribute("class", "");
73
- const originalSetAttribute = el.setAttribute.bind(el);
74
- const originalRemoveAttribute = el.removeAttribute.bind(el);
75
- el.setAttribute = function(name, value) {
76
- const result = originalSetAttribute(name, value);
77
- if (name === "catchMove" && value) el.addEventListener("catchtouchmove", emptyFunction);
78
- return result;
79
- };
80
- el.removeAttribute = function(name) {
81
- const oldValue = el.getAttribute(name);
82
- if (name === "catchMove" && oldValue) el.removeEventListener("catchtouchmove", emptyFunction);
83
- return originalRemoveAttribute(name);
84
- };
85
- return el;
86
- }
87
- };
88
- return document;
89
- }
90
- const taroDocumentProvider = process.env.TARO_PLATFORM === "web" ? env.document : env.document = isEnableTTDom() ? createTTDomDocument() : createDocument();
36
+ const taroDocumentProvider = env.document = createDocument();
91
37
  //#endregion
92
38
  export { taroDocumentProvider };
93
39
 
@@ -1 +1 @@
1
- {"version":3,"file":"document.js","names":[],"sources":["../../src/bom/document.ts"],"sourcesContent":["import { DEFAULT_COMPONENTS, isEnableTTDom, TT_SPECIFIC_COMPONENTS } from '@spcsn/taro-shared';\n\nimport { APP, BODY, CONTAINER, HEAD, HTML } from '../constants';\nimport { TaroDocument } from '../dom/document';\nimport env from '../env';\n\nfunction createDocument(): TaroDocument {\n /**\n * <document>\n * <html>\n * <head></head>\n * <body>\n * <container>\n * <app id=\"app\" />\n * </container>\n * </body>\n * </html>\n * </document>\n */\n const doc = new TaroDocument();\n const documentCreateElement = doc.createElement.bind(doc);\n const html = documentCreateElement(HTML);\n const head = documentCreateElement(HEAD);\n const body = documentCreateElement(BODY);\n const app = documentCreateElement(APP);\n app.id = APP;\n const container = documentCreateElement(CONTAINER);\n\n doc.appendChild(html);\n html.appendChild(head);\n html.appendChild(body);\n body.appendChild(container);\n container.appendChild(app);\n\n doc.documentElement = html;\n doc.head = head;\n doc.body = body;\n\n return doc;\n}\n\ndeclare const tt: any;\n\nexport function createTTDomDocument(): TaroDocument {\n const document = tt?.appDocument;\n if (!document) {\n throw new Error('tt.appDocument is not found');\n }\n const html = document.createElement(HTML);\n const head = document.createElement(HEAD);\n const body = document.createElement(BODY);\n const app = document.createElement(APP);\n app.id = APP;\n const container = document.createElement(CONTAINER);\n\n const emptyFunction = () => {};\n\n document.childNodes.push(html);\n html.childNodes.push(head, body);\n body.childNodes.push(container);\n container.childNodes.push(app);\n\n document.documentElement = html;\n document.head = head;\n document.body = body;\n document.appElement = app;\n\n let builtInComponents = tt?.getBuiltInComponents?.();\n if (Array.isArray(builtInComponents)) {\n builtInComponents = new Set(builtInComponents);\n } else if (!(builtInComponents instanceof Set)) {\n builtInComponents = new Set([...DEFAULT_COMPONENTS, ...TT_SPECIFIC_COMPONENTS]);\n }\n\n document.getElementById = function getElementById(id: string) {\n if (id === 'app') {\n return app;\n } else {\n return Object.getPrototypeOf(this).getElementById.call(this, id);\n }\n };\n\n document.getLastPage = function getLastPage() {\n let last;\n for (const v of this._pageDocumentMap.values()) last = v;\n return last;\n };\n\n document.createElement = function (type: string, ...args) {\n if (type === 'root') {\n return this.getLastPage();\n } else {\n const el = builtInComponents.has(type)\n ? Object.getPrototypeOf(this).createElement.call(this, type, ...args)\n : Object.getPrototypeOf(this).createNativeComponent.call(this, type, {\n __tt__inner__options__: {\n name: type,\n },\n });\n // 给元素加上 scopeId\n el.setAttribute('class', '');\n\n // 保存原始的 setAttribute 和 removeAttribute\n const originalSetAttribute = el.setAttribute.bind(el);\n const originalRemoveAttribute = el.removeAttribute.bind(el);\n\n // 拦截 setAttribute 来处理 catchMove\n el.setAttribute = function (name: string, value: any) {\n const result = originalSetAttribute(name, value);\n\n // 处理 catchMove 属性\n if (name === 'catchMove' && value) {\n el.addEventListener('catchtouchmove', emptyFunction);\n }\n\n return result;\n };\n\n // 拦截 removeAttribute 来处理 catchMove\n el.removeAttribute = function (name: string) {\n const oldValue = el.getAttribute(name);\n\n // 处理 catchMove 属性\n if (name === 'catchMove' && oldValue) {\n el.removeEventListener('catchtouchmove', emptyFunction);\n }\n\n return originalRemoveAttribute(name);\n };\n\n return el;\n }\n };\n return document;\n}\n\n// Note: 小程序端 vite 打包成 commonjs,const document = xxx 会报错,所以把 document 改为 taroDocumentProvider\nexport const taroDocumentProvider: TaroDocument =\n process.env.TARO_PLATFORM === 'web'\n ? env.document\n : (env.document = isEnableTTDom() ? createTTDomDocument() : createDocument());\n"],"mappings":"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"}
1
+ {"version":3,"file":"document.js","names":[],"sources":["../../src/bom/document.ts"],"sourcesContent":["import { APP, BODY, CONTAINER, HEAD, HTML } from '../constants';\nimport { TaroDocument } from '../dom/document';\nimport env from '../env';\n\nfunction createDocument(): TaroDocument {\n /**\n * <document>\n * <html>\n * <head></head>\n * <body>\n * <container>\n * <app id=\"app\" />\n * </container>\n * </body>\n * </html>\n * </document>\n */\n const doc = new TaroDocument();\n const documentCreateElement = doc.createElement.bind(doc);\n const html = documentCreateElement(HTML);\n const head = documentCreateElement(HEAD);\n const body = documentCreateElement(BODY);\n const app = documentCreateElement(APP);\n app.id = APP;\n const container = documentCreateElement(CONTAINER);\n\n doc.appendChild(html);\n html.appendChild(head);\n html.appendChild(body);\n body.appendChild(container);\n container.appendChild(app);\n\n doc.documentElement = html;\n doc.head = head;\n doc.body = body;\n\n return doc;\n}\n\n// Note: 小程序端 vite 打包成 commonjs,const document = xxx 会报错,所以把 document 改为 taroDocumentProvider\nexport const taroDocumentProvider: TaroDocument = (env.document = createDocument());\n"],"mappings":";;;;AAIA,SAAS,iBAA+B;;;;;;;;;;;;;CAatC,MAAM,MAAM,IAAI,aAAa;CAC7B,MAAM,wBAAwB,IAAI,cAAc,KAAK,GAAG;CACxD,MAAM,OAAO,sBAAsB,IAAI;CACvC,MAAM,OAAO,sBAAsB,IAAI;CACvC,MAAM,OAAO,sBAAsB,IAAI;CACvC,MAAM,MAAM,sBAAA,KAAyB;CACrC,IAAI,KAAA;CACJ,MAAM,YAAY,sBAAsB,SAAS;CAEjD,IAAI,YAAY,IAAI;CACpB,KAAK,YAAY,IAAI;CACrB,KAAK,YAAY,IAAI;CACrB,KAAK,YAAY,SAAS;CAC1B,UAAU,YAAY,GAAG;CAEzB,IAAI,kBAAkB;CACtB,IAAI,OAAO;CACX,IAAI,OAAO;CAEX,OAAO;AACT;AAGA,MAAa,uBAAsC,IAAI,WAAW,eAAe"}
@@ -0,0 +1,8 @@
1
+ //#region src/bom/get-computed-style.ts
2
+ const taroGetComputedStyleProvider = function(element) {
3
+ return element.style;
4
+ };
5
+ //#endregion
6
+ export { taroGetComputedStyleProvider };
7
+
8
+ //# sourceMappingURL=get-computed-style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-computed-style.js","names":[],"sources":["../../src/bom/get-computed-style.ts"],"sourcesContent":["import env from '../env';\n\nimport type { TaroElement } from '../dom/element';\nimport type { Style } from '../dom/style';\n\nexport type TGetComputedStyle = typeof window.getComputedStyle | ((el: TaroElement) => Style);\n\n// Note: 小程序端 vite 打包成 commonjs,const getComputedStyle = xxx 会报错,所以把 GetComputedStyle 改为 taroGetComputedStyleProvider\nexport const taroGetComputedStyleProvider: TGetComputedStyle = function (element: TaroElement): Style {\n return element.style;\n};\n"],"mappings":";AAQA,MAAa,+BAAkD,SAAU,SAA6B;CACpG,OAAO,QAAQ;AACjB"}
@@ -1,6 +1,5 @@
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";
5
4
  import { _classPrivateMethodInitSpec } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateMethodInitSpec.js";
6
5
  import { _classPrivateFieldInitSpec } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldInitSpec.js";
@@ -113,7 +112,7 @@ function _reset(href = "") {
113
112
  }]);
114
113
  _classPrivateFieldSet2(_cur, this, 0);
115
114
  }
116
- const History = process.env.TARO_PLATFORM === "web" ? env.window.History : TaroHistory;
115
+ const History = TaroHistory;
117
116
  //#endregion
118
117
  export { History };
119
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 #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 = process.env.TARO_PLATFORM === 'web' ? env.window.History : TaroHistory;\n"],"mappings":"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"}
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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"}
@@ -1,6 +1,5 @@
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";
5
4
  import { _classPrivateMethodInitSpec } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateMethodInitSpec.js";
6
5
  import { _classPrivateFieldInitSpec } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldInitSpec.js";
@@ -8,7 +7,7 @@ import { _assertClassBrand } from "../_virtual/_@oxc-project_runtime@0.130.0/hel
8
7
  import { _classPrivateFieldSet2 } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldSet2.js";
9
8
  import { _classPrivateFieldGet2 } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldGet2.js";
10
9
  import { getCurrentInstance } from "../current.js";
11
- import { TaroURLProvider } from "./URL.js";
10
+ import { TaroURLProvider } from "./url.js";
12
11
  import { isNumber, isString, warn } from "@spcsn/taro-shared";
13
12
  //#region src/bom/location.ts
14
13
  const INIT_URL = "https://taro.com";
@@ -198,7 +197,7 @@ function _checkUrlChange(preValue) {
198
197
  _assertClassBrand(_TaroLocation_brand, this, _rollBack).call(this, preValue.href);
199
198
  return false;
200
199
  }
201
- const Location = process.env.TARO_PLATFORM === "web" ? env.window.Location : TaroLocation;
200
+ const Location = TaroLocation;
202
201
  function generateFullUrl(val = "") {
203
202
  const origin = INIT_URL;
204
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 #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 = 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":";;;;;;;;;;;;AAiBA,MAAM,WAAW;AACjB,MAAM,QAAQ,IAAI,aAA8B,UAAU;;;;;AAE1D,IAAM,eAAN,cAA2B,OAAO;CAMhC,YAAY,SAAkB;EAC5B,MAAM;;yCALD,IAAI,gBAAgB,QAAQ,CAAA;gDACrB,KAAA;;EAMZ,uBAAA,SAAA,MAAe,QAAQ,MAAA;EAEvB,kBAAA,qBAAA,MAAA,MAAA,EAAA,KAAA,IAAY;EAEZ,KAAK,GACH,iCACC,SAAiB;GAChB,uBAAA,aAAA,MAAmB,IAAA;GAEnB,MAAM,WAAA,uBAAA,MAAW,IAAA,EAAU;GAC3B,uBAAA,MAAA,IAAA,EAAU,OAAO,gBAAgB,IAAI;GAErC,IAAI,aAAA,uBAAA,MAAa,IAAA,EAAU,MACzB,uBAAA,SAAA,IAAA,EAAa,QAAQ,YAAY;GAGnC,uBAAA,aAAA,MAAmB,KAAA;EACrB,GACA,IACF;EAGA,KAAK,GAAA,WAEG;GACJ,kBAAA,qBAAA,MAAA,MAAA,EAAA,KAAA,IAAY;EACd,GACA,IACF;EAEA,KAAK,GAAA,MAEF,WAAmB;GAClB,MAAM,IAAI,QAAQ,EAChB,UAAU,KAAK,KACjB,CAAC;EACH,GACA,IACF;EAEA,KAAK,GAAA,MAEF,WAAmB;GAElB,IAAI,MAAM,IAAI,MAAM,GAAG;IACrB,MAAM,MAAM,MAAM,IAAI,MAAM;IAC5B,uBAAA,aAAA,MAAmB,IAAA;IACnB,uBAAA,MAAA,IAAA,EAAU,OAAO,IAAI;IACrB,uBAAA,aAAA,MAAmB,KAAA;GACrB;EACF,GACA,IACF;EAEA,KAAK,GAAA,MAEF,WAAmB;GAClB,MAAM,OAAO,MAAM;EACrB,GACA,IACF;CACF;CAqEA,IAAI,WAAW;EACb,OAAA,uBAAA,MAAO,IAAA,EAAU;CACnB;CAEA,IAAI,SAAS,KAAa;EAExB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,mBAAI,KAAK,IAAI,KAAK,CAAC,GAAG;EAErD,MAAM,IAAI,KAAK;EACf,MAAM,WAAA,kBAAA,qBAAW,MAAA,YAAA,EAAA,KAAA,IAAkB;EACnC,uBAAA,MAAA,IAAA,EAAU,WAAW;EAErB,IAAA,kBAAA,qBAAI,MAAA,eAAA,EAAA,KAAA,MAAqB,QAAQ,GAAG,kBAAA,qBAAA,MAAA,cAAA,EAAA,KAAA,IAAoB;CAC1D;CAEA,IAAI,OAAO;EACT,OAAA,uBAAA,MAAO,IAAA,EAAU;CACnB;CAEA,IAAI,KAAK,KAAa;EACpB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG;EAC5B,MAAM,IAAI,KAAK;EAEf,MAAM,WAAA,kBAAA,qBAAW,MAAA,YAAA,EAAA,KAAA,IAAkB;EACnC,uBAAA,MAAA,IAAA,EAAU,OAAO;EAEjB,IAAA,kBAAA,qBAAI,MAAA,eAAA,EAAA,KAAA,MAAqB,QAAQ,GAAG,kBAAA,qBAAA,MAAA,cAAA,EAAA,KAAA,IAAoB;CAC1D;CAEA,IAAI,WAAW;EACb,OAAA,uBAAA,MAAO,IAAA,EAAU;CACnB;CAEA,IAAI,SAAS,KAAa;EACxB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG;EAC5B,MAAM,IAAI,KAAK;EAEf,MAAM,WAAA,kBAAA,qBAAW,MAAA,YAAA,EAAA,KAAA,IAAkB;EACnC,uBAAA,MAAA,IAAA,EAAU,WAAW;EAErB,IAAA,kBAAA,qBAAI,MAAA,eAAA,EAAA,KAAA,MAAqB,QAAQ,GAAG,kBAAA,qBAAA,MAAA,cAAA,EAAA,KAAA,IAAoB;CAC1D;CAEA,IAAI,OAAO;EACT,OAAA,uBAAA,MAAO,IAAA,EAAU;CACnB;CAEA,IAAI,KAAK,KAAa;EACpB,MAAM,OAAO,OAAQ,MAAM,IAAI,KAAK,CAAE;EACtC,IAAI,CAAC,SAAS,IAAI,KAAK,QAAQ,GAAG;EAElC,MAAM,WAAA,kBAAA,qBAAW,MAAA,YAAA,EAAA,KAAA,IAAkB;EACnC,uBAAA,MAAA,IAAA,EAAU,OAAO;EAEjB,IAAA,kBAAA,qBAAI,MAAA,eAAA,EAAA,KAAA,MAAqB,QAAQ,GAAG,kBAAA,qBAAA,MAAA,cAAA,EAAA,KAAA,IAAoB;CAC1D;CAEA,IAAI,WAAW;EACb,OAAA,uBAAA,MAAO,IAAA,EAAU;CACnB;CAEA,IAAI,SAAS,KAAa;EACxB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG;EAC5B,MAAM,IAAI,KAAK;EAEf,MAAM,WAAA,kBAAA,qBAAW,MAAA,YAAA,EAAA,KAAA,IAAkB;EACnC,uBAAA,MAAA,IAAA,EAAU,WAAW;EAErB,IAAA,kBAAA,qBAAI,MAAA,eAAA,EAAA,KAAA,MAAqB,QAAQ,GAAG,kBAAA,qBAAA,MAAA,cAAA,EAAA,KAAA,IAAoB;CAC1D;CAEA,IAAI,SAAS;EACX,OAAA,uBAAA,MAAO,IAAA,EAAU;CACnB;CAEA,IAAI,OAAO,KAAa;EACtB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG;EAC5B,MAAM,IAAI,KAAK;EACf,MAAM,IAAI,WAAW,GAAG,IAAI,MAAM,IAAI;EAEtC,MAAM,WAAA,kBAAA,qBAAW,MAAA,YAAA,EAAA,KAAA,IAAkB;EACnC,uBAAA,MAAA,IAAA,EAAU,SAAS;EAEnB,IAAA,kBAAA,qBAAI,MAAA,eAAA,EAAA,KAAA,MAAqB,QAAQ,GAAG,kBAAA,qBAAA,MAAA,cAAA,EAAA,KAAA,IAAoB;CAC1D;CAEA,IAAI,OAAO;EACT,OAAA,uBAAA,MAAO,IAAA,EAAU;CACnB;CAGA,IAAI,KAAK,KAAa;EACpB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG;EAC5B,MAAM,IAAI,KAAK;EACf,MAAM,IAAI,WAAW,GAAG,IAAI,MAAM,IAAI;EAEtC,MAAM,WAAA,kBAAA,qBAAW,MAAA,YAAA,EAAA,KAAA,IAAkB;EACnC,uBAAA,MAAA,IAAA,EAAU,OAAO;EAEjB,IAAA,kBAAA,qBAAI,MAAA,eAAA,EAAA,KAAA,MAAqB,QAAQ,GAAG,kBAAA,qBAAA,MAAA,cAAA,EAAA,KAAA,IAAoB;CAC1D;CAEA,IAAI,OAAO;EACT,OAAA,uBAAA,MAAO,IAAA,EAAU;CACnB;CAEA,IAAI,KAAK,KAAa;EAEpB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,yBAAI,KAAM,MAAM,IAAI,KAAK,CAAE,GAAG;EAE7D,MAAM,WAAA,kBAAA,qBAAW,MAAA,YAAA,EAAA,KAAA,IAAkB;EACnC,uBAAA,MAAA,IAAA,EAAU,OAAO;EAEjB,IAAA,kBAAA,qBAAI,MAAA,eAAA,EAAA,KAAA,MAAqB,QAAQ,GAAG,kBAAA,qBAAA,MAAA,cAAA,EAAA,KAAA,IAAoB;CAC1D;CAEA,IAAI,SAAS;EACX,OAAA,uBAAA,MAAO,IAAA,EAAU;CACnB;CAEA,IAAI,OAAO,KAAa;EAEtB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,yBAAI,KAAM,MAAM,IAAI,KAAK,CAAE,GAAG;EAE7D,MAAM,WAAA,kBAAA,qBAAW,MAAA,YAAA,EAAA,KAAA,IAAkB;EACnC,uBAAA,MAAA,IAAA,EAAU,SAAS;EAEnB,IAAA,kBAAA,qBAAI,MAAA,eAAA,EAAA,KAAA,MAAqB,QAAQ,GAAG,kBAAA,qBAAA,MAAA,cAAA,EAAA,KAAA,IAAoB;CAC1D;CAGA,SAAS;EACP,KAAK,MAAM,8BAA8B;CAC3C;CAEA,SAAS;EACP,KAAK,MAAM,8BAA8B;CAC3C;CAEA,QAAQ,KAAa;EACnB,KAAK,QAAQ,gCAAgC,GAAG;CAClD;CAEA,WAAW;EACT,OAAO,KAAK;CACd;CAGA,IAAI,QAAQ;EACV,OAAO;CACT;AACF;AAzNE,SAAA,SAAS;CAEP,MAAM,SADU,mBACK,EAAE;CACvB,IAAI,QAAQ;EACV,MAAM,EAAE,MAAM,WAAW;EACzB,MAAM,YAAY,OAAO,KAAK,MAAM,EAAE,KAAK,QAAQ;GACjD,OAAO,GAAG,IAAI,GAAG,OAAO;EAC1B,CAAC;EACD,MAAM,YAAY,UAAU,SAAS,IAAI,MAAM,UAAU,KAAK,GAAG,IAAI;EACrE,MAAM,MAAM,GAAG,WAAW,KAAK,WAAW,GAAG,IAAI,OAAO,MAAM,OAAO;EAErE,uBAAA,MAAA,MAAY,IAAI,gBAAgB,GAAG,CAAA;EAEnC,KAAK,QAAQ,qBAAqB,KAAK,IAAI;CAC7C;AACF;AAEA,SAAA,eAAyB;CACvB,OAAA,uBAAA,MAAO,IAAA,EAAU,OAAO;AAC1B;AAEA,SAAA,UAAU,MAAc;CACtB,uBAAA,MAAA,IAAA,EAAU,OAAO;AACnB;AAEA,SAAA,iBAAiB;CACf,KAAK,QAAQ,sBAAsB,KAAK,IAAI;AAC9C;;;;AAKA,SAAA,gBAAgB,UAA6B;CAC3C,IAAA,uBAAA,aAAI,IAAA,GACF,OAAO;CAGT,MAAM,EAAE,UAAU,UAAU,MAAM,UAAU,QAAQ,SAAA,uBAAA,MAAS,IAAA,EAAU,OAAO;CAG9E,IAAI,aAAa,SAAS,YAAY,aAAa,SAAS,YAAY,SAAS,SAAS,MAAM;EAC9F,kBAAA,qBAAA,MAAA,SAAA,EAAA,KAAA,MAAe,SAAS,IAAI;EAC5B,OAAO;CACT;CAGA,IAAI,aAAa,SAAS,UACxB,OAAO;CAIT,IAAI,WAAW,SAAS,QACtB,OAAO;CAIT,IAAI,SAAS,SAAS,MAAM;EAC1B,uBAAA,SAAA,IAAA,EAAa,QAAQ,YAAY;EACjC,OAAO;CACT;CAEA,kBAAA,qBAAA,MAAA,SAAA,EAAA,KAAA,MAAe,SAAS,IAAI;CAC5B,OAAO;AACT;AA6JF,MAAa,WAAgC;AAE7C,SAAS,gBAAgB,MAAM,IAAI;CACjC,MAAM,SAAS;CACf,IAAI,SAAS,KAAK,GAAG,GACnB,OAAO,SAAS;CAElB,OAAO;AACT"}
@@ -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
+ }
@@ -1,9 +1,7 @@
1
- import env from "../env.js";
2
1
  import { _classPrivateFieldInitSpec } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldInitSpec.js";
3
2
  import { _classPrivateFieldGet2 } from "../_virtual/_@oxc-project_runtime@0.130.0/helpers/classPrivateFieldGet2.js";
4
3
  import { isArray } from "@spcsn/taro-shared";
5
- //#region src/bom/URLSearchParams.ts
6
- var _dict;
4
+ //#region src/bom/url-search-params.ts
7
5
  const findReg = /[!'()~]|%20|%00/g;
8
6
  const plusReg = /\+/g;
9
7
  const replaceCharMap = {
@@ -23,16 +21,14 @@ function appendTo(dict, name, value) {
23
21
  if (name in dict) dict[name].push(res);
24
22
  else dict[name] = [res];
25
23
  }
26
- function addEach(value, key) {
27
- appendTo(this, key, value);
28
- }
29
24
  function decode(str) {
30
25
  return decodeURIComponent(str.replace(plusReg, " "));
31
26
  }
32
27
  function encode(str) {
33
28
  return encodeURIComponent(str).replace(findReg, replacer);
34
29
  }
35
- const URLSearchParams = process.env.TARO_PLATFORM === "web" ? env.window.URLSearchParams : (_dict = /* @__PURE__ */ new WeakMap(), class {
30
+ var _dict = /* @__PURE__ */ new WeakMap();
31
+ var URLSearchParams = class {
36
32
  constructor(query) {
37
33
  var _query;
38
34
  _classPrivateFieldInitSpec(this, _dict, Object.create(null));
@@ -54,7 +50,7 @@ const URLSearchParams = process.env.TARO_PLATFORM === "web" ? env.window.URLSear
54
50
  const value = query[i];
55
51
  appendTo(dict, value[0], value[1]);
56
52
  }
57
- else if (query.forEach) query.forEach(addEach, dict);
53
+ else if (query.forEach) query.forEach((value, key) => appendTo(dict, key, value));
58
54
  else for (const key in query) appendTo(dict, key, query[key]);
59
55
  }
60
56
  append(name, value) {
@@ -82,11 +78,12 @@ const URLSearchParams = process.env.TARO_PLATFORM === "web" ? env.window.URLSear
82
78
  }
83
79
  forEach(callback, thisArg) {
84
80
  const dict = _classPrivateFieldGet2(_dict, this);
85
- Object.getOwnPropertyNames(dict).forEach(function(name) {
86
- dict[name].forEach(function(value) {
87
- callback.call(thisArg, value, name, this);
88
- }, this);
89
- }, this);
81
+ const searchParams = this;
82
+ Object.getOwnPropertyNames(dict).forEach((name) => {
83
+ dict[name].forEach((value) => {
84
+ callback.call(thisArg, value, name, searchParams);
85
+ });
86
+ });
90
87
  }
91
88
  toJSON() {
92
89
  return {};
@@ -100,8 +97,8 @@ const URLSearchParams = process.env.TARO_PLATFORM === "web" ? env.window.URLSear
100
97
  }
101
98
  return query.join("&");
102
99
  }
103
- });
100
+ };
104
101
  //#endregion
105
102
  export { URLSearchParams };
106
103
 
107
- //# sourceMappingURL=URLSearchParams.js.map
104
+ //# sourceMappingURL=url-search-params.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-search-params.js","names":[],"sources":["../../src/bom/url-search-params.ts"],"sourcesContent":["import { isArray } from '@spcsn/taro-shared';\n\nconst findReg = /[!'()~]|%20|%00/g;\nconst plusReg = /\\+/g;\nconst replaceCharMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00',\n};\n\nfunction replacer(match: string) {\n return replaceCharMap[match];\n}\n\nfunction appendTo(dict: Record<string, string[]>, name: string, value: string) {\n const res = isArray(value) ? value.join(',') : value;\n if (name in dict) dict[name].push(res);\n else dict[name] = [res];\n}\n\nfunction decode(str: string) {\n return decodeURIComponent(str.replace(plusReg, ' '));\n}\n\nfunction encode(str: string) {\n return encodeURIComponent(str).replace(findReg, replacer);\n}\n\nexport class URLSearchParams {\n #dict = Object.create(null);\n\n constructor(query) {\n query ??= '';\n\n const dict = this.#dict;\n\n if (typeof query === 'string') {\n if (query.charAt(0) === '?') {\n query = query.slice(1);\n }\n for (let pairs = query.split('&'), i = 0, length = pairs.length; i < length; i++) {\n const value = pairs[i];\n const index = value.indexOf('=');\n\n // 针对不规范的 url 参数做容错处理,如:word=你%好\n try {\n if (index > -1) {\n appendTo(dict, decode(value.slice(0, index)), decode(value.slice(index + 1)));\n } else if (value.length) {\n appendTo(dict, decode(value), '');\n }\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`[Taro warn] URL 参数 ${value} decode 异常`);\n }\n }\n }\n } else {\n if (isArray(query)) {\n for (let i = 0, length = query.length; i < length; i++) {\n const value = query[i];\n appendTo(dict, value[0], value[1]);\n }\n } else if (query.forEach) {\n query.forEach((value: string, key: string) => appendTo(dict, key, value));\n } else {\n for (const key in query) {\n appendTo(dict, key, query[key]);\n }\n }\n }\n }\n\n append(name: string, value: string) {\n appendTo(this.#dict, name, value);\n }\n\n delete(name: string) {\n delete this.#dict[name];\n }\n\n get(name: string) {\n const dict = this.#dict;\n return name in dict ? dict[name][0] : null;\n }\n\n getAll(name: string) {\n const dict = this.#dict;\n return name in dict ? dict[name].slice(0) : [];\n }\n\n has(name: string) {\n return name in this.#dict;\n }\n\n keys() {\n return Object.keys(this.#dict);\n }\n\n set(name: string, value: string) {\n this.#dict[name] = ['' + value];\n }\n\n forEach(callback, thisArg) {\n const dict = this.#dict;\n const searchParams = this;\n Object.getOwnPropertyNames(dict).forEach((name) => {\n dict[name].forEach((value: string) => {\n callback.call(thisArg, value, name, searchParams);\n });\n });\n }\n\n toJSON() {\n return {};\n }\n\n toString() {\n const dict = this.#dict;\n const query: any[] = [];\n for (const key in dict) {\n const name = encode(key);\n for (let i = 0, value = dict[key]; i < value.length; i++) {\n query.push(name + '=' + encode(value[i]));\n }\n }\n return query.join('&');\n }\n}\n"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { URLSearchParams } from './url-search-params';
1
2
  declare class TaroURL {
2
3
  #private;
3
4
  static createObjectURL(): void;