;
210 |
--------------------------------------------------------------------------------
/index.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | declare namespace mp {
5 | /********** App **********/
6 |
7 | /**
8 | * App生命周期
9 | */
10 | interface AppLifeCycle {
11 | /**
12 | * 生命周期函数--监听小程序初始化 当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
13 | */
14 | onLaunch?(): void;
15 | /**
16 | * 生命周期函数--监听小程序显示 当小程序启动,或从后台进入前台显示,会触发 onShow
17 | */
18 | onShow?(): void;
19 | /**
20 | * 生命周期函数--监听小程序隐藏 当小程序从前台进入后台,会触发 onHide
21 | */
22 | onHide?(): void;
23 | /**
24 | * 错误监听函数 当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息
25 | */
26 | onError?(): void;
27 | }
28 |
29 | interface WxApp extends AppLifeCycle { }
30 |
31 | class WxApp {
32 | mounted?(): void;
33 | }
34 |
35 | /********** Page **********/
36 |
37 | /**
38 | * Page生命周期
39 | */
40 | interface PageLifeCycle {
41 | /**
42 | * 生命周期函数--监听页面加载
43 | */
44 | onLoad?(): void;
45 | /**
46 | * 生命周期函数--监听页面初次渲染完成
47 | */
48 | onReady?(): void;
49 | /**
50 | * 生命周期函数--监听页面显示
51 | */
52 | onShow?(): void;
53 | /**
54 | * 生命周期函数--监听页面隐藏
55 | */
56 | onHide?(): void;
57 | /**
58 | * 生命周期函数--监听页面卸载
59 | */
60 | onUnload?(): void;
61 | /**
62 | * 页面相关事件处理函数--监听用户下拉动作
63 | */
64 | onPullDownRefresh?(): void;
65 | /**
66 | * 页面上拉触底事件的处理函数
67 | */
68 | onReachBottom?(): void;
69 | /**
70 | * 用户点击右上角转发
71 | */
72 | onShareAppMessage?(): void;
73 | /**
74 | * 页面滚动触发事件的处理函数
75 | */
76 | onPageScroll?(): void;
77 | }
78 |
79 | interface Page {
80 | data: S;
81 | setData(data: Partial, cb?: Function): void;
82 | }
83 |
84 | interface WxPage extends PageLifeCycle { }
85 |
86 | class WxPage
{
87 |
88 | state: Readonly>;
89 | query: P;
90 |
91 | constructor(page: Page, options: P);
92 |
93 | setState(state: Partial, cb?: Function): Promise
94 |
95 | navigateTo(page: string, query?: { [key: string]: number | string | boolean }): Promise;
96 |
97 | redirectTo(page: string, query?: { [key: string]: number | string | boolean }): Promise;
98 |
99 | setTitle(title: string): Promise;
100 |
101 | }
102 |
103 | /********** 组件 **********/
104 |
105 | /**
106 | * 组件生命周期
107 | */
108 | interface ComponentLifeCycle {
109 | /**
110 | * 组件生命周期函数,在组件实例进入页面节点树时执行,注意此时不能调用 setData
111 | */
112 | created?(): void;
113 | /**
114 | * 组件生命周期函数,在组件实例进入页面节点树时执行
115 | */
116 | attached?(): void;
117 | /**
118 | * 组件生命周期函数,在组件布局完成后执行,此时可以获取节点信息(使用 SelectorQuery )
119 | */
120 | ready?(): void;
121 | /**
122 | * 组件生命周期函数,在组件实例被移动到节点树另一个位置时执行
123 | */
124 | moved?(): void;
125 | /**
126 | * 组件生命周期函数,在组件实例被从页面节点树移除时执行
127 | */
128 | detached?(): void;
129 | }
130 |
131 |
132 | interface Component {
133 | /**
134 | * 组件的文件路径
135 | */
136 | is: string;
137 | /**
138 | * 节点id
139 | */
140 | id: string;
141 | /**
142 | * 节点dataset
143 | */
144 | dataset: string;
145 | /**
146 | * 组件数据,包括内部数据和属性值
147 | */
148 | data: S;
149 | properties: any;
150 | methods: {
151 | [method: string]: Function;
152 | };
153 | /**
154 | *
155 | * 设置data并执行视图层渲染
156 | */
157 | setData: (data: Partial, cb?: Function) => void;
158 | /**
159 | * 检查组件是否具有 behavior (检查时会递归检查被直接或间接引入的所有behavior)
160 | */
161 | hasBehavior: (behavior: object) => boolean;
162 | /**
163 | *
164 | * 触发事件,参见 组件事件
165 | */
166 | triggerEvent: (name: string, detail: object, options: any) => void;
167 | /**
168 | * 创建一个 SelectorQuery 对象,选择器选取范围为这个组件实例内
169 | */
170 | createSelectorQuery: () => any;
171 | /**
172 | * 使用选择器选择组件实例节点,返回匹配到的第一个组件实例对象
173 | */
174 | selectComponent: (selector: string) => void;
175 | /**
176 | * 使用选择器选择组件实例节点,返回匹配到的全部组件实例对象组成的数组
177 | */
178 | selectAllComponents: (selector: string) => void;
179 | /**
180 | * 获取所有这个关系对应的所有关联节点,参见 组件间关系
181 | */
182 | getRelationNodes: (relationKey: string) => Array;
183 | }
184 |
185 | interface WxComponent extends ComponentLifeCycle { }
186 |
187 | class WxComponent
{
188 | constructor(component: Component);
189 | /**
190 | * 组件属性
191 | */
192 | props: Readonly
;
193 | /**
194 | * 组件状态
195 | */
196 | state: Readonly>;
197 |
198 | template: JSX.Element;
199 |
200 | setState(state: Partial): Promise;
201 |
202 | }
203 |
204 | }
205 |
206 | declare global {
207 | namespace JSX {
208 | interface ElementAttributesProperty { props: {}; }
209 | interface Element { }
210 | interface IntrinsicElements {
211 | template: WXML.Template;
212 | block: WXML.Block;
213 | import: WXML.Import;
214 | view: WXML.View;
215 | 'scroll-view': WXML.ScrollView;
216 | swiper: WXML.Swiper;
217 | 'swiper-item': WXML.SwiperItem;
218 | icon: WXML.Icon;
219 | text: WXML.Text;
220 | progress: WXML.Progress;
221 | button: WXML.Form.Button;
222 | 'checkbox-group': WXML.Form.CheckboxGroup;
223 | checkbox: WXML.Form.Checkbox;
224 | form: WXML.Form.Form;
225 | input: WXML.Form.Input;
226 | label: WXML.Form.Label;
227 | picker: WXML.Form.Picker;
228 | 'radio-group': WXML.Form.RadioGroup;
229 | radio: WXML.Form.Radio;
230 | slider: WXML.Form.Slider;
231 | switch: WXML.Form.Switch;
232 | textarea: WXML.Form.TextArea;
233 | navigator: WXML.Navigator;
234 | audio: WXML.Audio;
235 | image: WXML.Image;
236 | video: WXML.Video;
237 | map: WXML.Map;
238 | canvas: WXML.Canvas;
239 | slot: WXML.Slot;
240 | }
241 | }
242 | }
243 |
244 | export default wx;
245 |
246 | export declare class WxApp extends mp.WxApp { }
247 | export declare abstract class WxPage extends mp.WxPage
{
248 | abstract template: JSX.Element;
249 | }
250 | export declare abstract class WxComponent
extends mp.WxComponent
{
251 | abstract template: JSX.Element;
252 | }
253 | export function AppConfig(config: {
254 | /**
255 | * 设置页面路径
256 | */
257 | pages: Array;
258 | /**
259 | * 设置默认页面的窗口表现
260 | */
261 | window?: {
262 | /**
263 | * #000000 导航栏背景颜色,如#000000
264 | */
265 | navigationBarBackgroundColor?: string;
266 | /**
267 | * white 导航栏标题颜色,仅支持 black/white
268 | */
269 | navigationBarTextStyle?: string;
270 | /**
271 | * 导航栏标题文字内容
272 | */
273 | navigationBarTitleText?: string;
274 | /**
275 | * default 导航栏样式,仅支持 default/custom。custom 模式可自定义导航栏,只保留右上角胶囊状的按钮 微信版本 6.6.0
276 | */
277 | navigationStyle?: string;
278 | /**
279 | * #ffffff 窗口的背景色
280 | */
281 | backgroundColor?: string;
282 | /**
283 | * dark 下拉背景字体、loading 图的样式,仅支持 dark/light
284 | */
285 | backgroundTextStyle?: string;
286 | /**
287 | * #ffffff 顶部窗口的背景色,仅 iOS 支持 微信版本 6.5.16
288 | */
289 | backgroundColorTop?: string;
290 | /**
291 | * #ffffff 底部窗口的背景色,仅 iOS 支持 微信版本 6.5.16
292 | */
293 | backgroundColorBottom?: string;
294 | /**
295 | * false 是否开启下拉刷新,详见页面相关事件处理函数
296 | */
297 | enablePullDownRefresh?: boolean;
298 | /**
299 | * 50 页面上拉触底事件触发时距页面底部距离,单位为px
300 | */
301 | onReachBottomDistance?: number;
302 | };
303 | /**
304 | * 设置底部 tab 的表现
305 | */
306 | tabBar?: {
307 | /**
308 | * tab 上的文字默认颜色
309 | */
310 | color: string;
311 | /**
312 | * tab 上的文字选中时的颜色
313 | */
314 | selectedColor: string;
315 | /**
316 | * tab 的背景色
317 | */
318 | backgroundColor: string;
319 | /**
320 | * black tabbar上边框的颜色, 仅支持 black/white
321 | */
322 | borderStyle?: string;
323 | /**
324 | * tab 的列表,详见 list 属性说明,最少2个、最多5个 tab
325 | */
326 | list: Array<{
327 | /**
328 | * 页面路径,必须在 pages 中先定义
329 | */
330 | pagePath: string;
331 | /**
332 | * tab 上按钮文字
333 | */
334 | text: string;
335 | /**
336 | * 图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px,当 postion 为 top 时,此参数无效,不支持网络图片
337 | */
338 | iconPath?: string;
339 | /**
340 | * 选中时的图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px ,当 postion 为 top 时,此参数无效
341 | */
342 | selectedIconPath?: string
343 | }>;
344 | /**
345 | *bottom 可选值 bottom、top
346 | */
347 | position?: string;
348 | };
349 | /**
350 | * 设置网络超时时间
351 | */
352 | networkTimeout?: {
353 | /**
354 | * wx.request的超时时间,单位毫秒,默认为:60000
355 | */
356 | request?: number;
357 | /**
358 | * wx.connectSocket的超时时间,单位毫秒,默认为:60000
359 | */
360 | connectSocket?: number;
361 | /**
362 | * wx.uploadFile的超时时间,单位毫秒,默认为:60000
363 | */
364 | uploadFile?: number;
365 | /**
366 | * wx.downloadFile的超时时间,单位毫秒,默认为:60000
367 | */
368 | downloadFile?: number;
369 | };
370 | /**
371 | * 设置是否开启 debug 模式
372 | */
373 | debug?: boolean;
374 | }): (constructor: T) => any;
375 |
376 |
377 | export function PageConfig(config: {
378 | /**
379 | * #000000 导航栏背景颜色,如"#000000"
380 | */
381 | navigationBarBackgroundColor?: string;
382 | /**
383 | * white 导航栏标题颜色,仅支持 black/white
384 | */
385 | navigationBarTextStyle?: string;
386 | /**
387 | * 导航栏标题文字内容
388 | */
389 | navigationBarTitleText?: string;
390 | /**
391 | * #ffffff 窗口的背景色
392 | */
393 | backgroundColor?: string;
394 | /**
395 | * dark 下拉背景字体、loading 图的样式,仅支持 dark/light
396 | */
397 | backgroundTextStyle?: string;
398 | /**
399 | * false 是否开启下拉刷新,详见页面相关事件处理函数。
400 | */
401 | enablePullDownRefresh?: boolean;
402 | /**
403 | * false 设置为 true 则页面整体不能上下滚动;只在 page.json 中有效,无法在 app.json 中设置该项
404 | */
405 | disableScroll?: boolean;
406 | /**
407 | * 50 页面上拉触底事件触发时距页面底部距离,单位为px
408 | */
409 | onReachBottomDistance?: number;
410 | }): (constructor: T) => any;
411 |
--------------------------------------------------------------------------------
/lib/index.js:
--------------------------------------------------------------------------------
1 | (function (global, factory) {
2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
3 | typeof define === 'function' && define.amd ? define(['exports'], factory) :
4 | (factory((global.mpreact = {})));
5 | }(this, (function (exports) { 'use strict';
6 |
7 | function isSyncApi(api) {
8 | return /^(on|create|stop|pause|hide)/.test(api)
9 | || /Sync$/.test(api)
10 | || ["pageScrollTo", "showNavigationBarLoading", "navigateBack"].indexOf(api) !== -1;
11 | }
12 | function promisifyWxApi() {
13 | // 命令空间
14 | let ns = {};
15 | Object.keys(wx).forEach(api => {
16 | if (!isSyncApi(api)) {
17 | ns[api] = function (obj = {}, ...args) {
18 | return new Promise((resolve, reject) => {
19 | obj.success = resolve;
20 | obj.fail = reject;
21 | wx[api](obj, ...args);
22 | });
23 | };
24 | }
25 | else {
26 | ns[api] = wx[api];
27 | }
28 | });
29 | ns.getApp = function () {
30 | return getApp();
31 | };
32 | ns.getCurrentPages = function () {
33 | return getCurrentPages();
34 | };
35 | ns.sleep = function (time = 500) {
36 | return new Promise((resolve, reject) => {
37 | setTimeout(() => {
38 | resolve();
39 | }, time);
40 | });
41 | };
42 | return ns;
43 | }
44 | var wx$1 = promisifyWxApi();
45 |
46 | class WxComponent {
47 | constructor(component) {
48 | this.component = component;
49 | this.state = {};
50 | this.props = Object.assign({}, this.component.properties);
51 | [
52 | // 实例方法
53 | ...Object.getOwnPropertyNames(Object.getPrototypeOf(this)),
54 | ].forEach(method => {
55 | if (typeof this[method] == "function" && ['constructor', 'mounted'].indexOf(method) === -1) {
56 | component[method] = this[method].bind(this);
57 | }
58 | });
59 | }
60 | setState(state, cb) {
61 | this.state = Object.assign({}, this.state, state);
62 | this.component.setData(state, () => {
63 | cb && cb();
64 | });
65 | }
66 | }
67 |
68 | /**
69 | * 小程序Page类, P为page query,S为Page state
70 | */
71 | class WxPage {
72 | constructor(page, options) {
73 | this.page = page;
74 | this.query = options;
75 | [
76 | // 实例方法
77 | ...Object.getOwnPropertyNames(Object.getPrototypeOf(this)),
78 | ].forEach(method => {
79 | if (typeof this[method] == "function" && ['constructor', 'mounted'].indexOf(method) === -1) {
80 | page[method] = this[method].bind(this);
81 | }
82 | });
83 | }
84 | setState(state, cb) {
85 | this.state = Object.assign({}, this.state, state);
86 | return new Promise((resolve, reject) => {
87 | this.page.setData(state, () => {
88 | cb && cb();
89 | resolve();
90 | });
91 | });
92 | }
93 | navigateTo(page, query = {}) {
94 | let url = page + `?${Object.keys(query).map(key => `${key}=${query[key]}`).join('&')}`;
95 | return wx.navigateTo({ url });
96 | }
97 | redirectTo(page, query = {}) {
98 | let url = page + `?${Object.keys(query).map(key => `${key}=${query[key]}`).join('&')}`;
99 | return wx.redirectTo({ url });
100 | }
101 | setTitle(title) {
102 | wx.setNavigationBarTitle({ title });
103 | }
104 | }
105 |
106 | class WxApp {
107 | constructor(app, options) {
108 | this.app = app;
109 | this.options = options;
110 | }
111 | }
112 |
113 | exports.default = wx$1;
114 | exports.WxComponent = WxComponent;
115 | exports.WxPage = WxPage;
116 | exports.WxApp = WxApp;
117 |
118 | Object.defineProperty(exports, '__esModule', { value: true });
119 |
120 | })));
121 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "mpreact",
3 | "version": "0.0.4",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@mrmlnc/readdir-enhanced": {
8 | "version": "2.2.1",
9 | "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
10 | "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
11 | "dev": true,
12 | "requires": {
13 | "call-me-maybe": "^1.0.1",
14 | "glob-to-regexp": "^0.3.0"
15 | }
16 | },
17 | "@nodelib/fs.stat": {
18 | "version": "1.1.2",
19 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.2.tgz",
20 | "integrity": "sha512-yprFYuno9FtNsSHVlSWd+nRlmGoAbqbeCwOryP6sC/zoCjhpArcRMYp19EvpSUSizJAlsXEwJv+wcWS9XaXdMw==",
21 | "dev": true
22 | },
23 | "arr-diff": {
24 | "version": "4.0.0",
25 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
26 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
27 | "dev": true
28 | },
29 | "arr-flatten": {
30 | "version": "1.1.0",
31 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
32 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
33 | "dev": true
34 | },
35 | "arr-union": {
36 | "version": "3.1.0",
37 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
38 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
39 | "dev": true
40 | },
41 | "array-unique": {
42 | "version": "0.3.2",
43 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
44 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
45 | "dev": true
46 | },
47 | "assign-symbols": {
48 | "version": "1.0.0",
49 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
50 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
51 | "dev": true
52 | },
53 | "atob": {
54 | "version": "2.1.2",
55 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
56 | "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
57 | "dev": true
58 | },
59 | "balanced-match": {
60 | "version": "1.0.0",
61 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
62 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
63 | "dev": true
64 | },
65 | "base": {
66 | "version": "0.11.2",
67 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
68 | "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
69 | "dev": true,
70 | "requires": {
71 | "cache-base": "^1.0.1",
72 | "class-utils": "^0.3.5",
73 | "component-emitter": "^1.2.1",
74 | "define-property": "^1.0.0",
75 | "isobject": "^3.0.1",
76 | "mixin-deep": "^1.2.0",
77 | "pascalcase": "^0.1.1"
78 | },
79 | "dependencies": {
80 | "define-property": {
81 | "version": "1.0.0",
82 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
83 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
84 | "dev": true,
85 | "requires": {
86 | "is-descriptor": "^1.0.0"
87 | }
88 | },
89 | "is-accessor-descriptor": {
90 | "version": "1.0.0",
91 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
92 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
93 | "dev": true,
94 | "requires": {
95 | "kind-of": "^6.0.0"
96 | }
97 | },
98 | "is-data-descriptor": {
99 | "version": "1.0.0",
100 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
101 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
102 | "dev": true,
103 | "requires": {
104 | "kind-of": "^6.0.0"
105 | }
106 | },
107 | "is-descriptor": {
108 | "version": "1.0.2",
109 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
110 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
111 | "dev": true,
112 | "requires": {
113 | "is-accessor-descriptor": "^1.0.0",
114 | "is-data-descriptor": "^1.0.0",
115 | "kind-of": "^6.0.2"
116 | }
117 | }
118 | }
119 | },
120 | "brace-expansion": {
121 | "version": "1.1.11",
122 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
123 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
124 | "dev": true,
125 | "requires": {
126 | "balanced-match": "^1.0.0",
127 | "concat-map": "0.0.1"
128 | }
129 | },
130 | "braces": {
131 | "version": "2.3.2",
132 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
133 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
134 | "dev": true,
135 | "requires": {
136 | "arr-flatten": "^1.1.0",
137 | "array-unique": "^0.3.2",
138 | "extend-shallow": "^2.0.1",
139 | "fill-range": "^4.0.0",
140 | "isobject": "^3.0.1",
141 | "repeat-element": "^1.1.2",
142 | "snapdragon": "^0.8.1",
143 | "snapdragon-node": "^2.0.1",
144 | "split-string": "^3.0.2",
145 | "to-regex": "^3.0.1"
146 | },
147 | "dependencies": {
148 | "extend-shallow": {
149 | "version": "2.0.1",
150 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
151 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
152 | "dev": true,
153 | "requires": {
154 | "is-extendable": "^0.1.0"
155 | }
156 | }
157 | }
158 | },
159 | "cache-base": {
160 | "version": "1.0.1",
161 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
162 | "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
163 | "dev": true,
164 | "requires": {
165 | "collection-visit": "^1.0.0",
166 | "component-emitter": "^1.2.1",
167 | "get-value": "^2.0.6",
168 | "has-value": "^1.0.0",
169 | "isobject": "^3.0.1",
170 | "set-value": "^2.0.0",
171 | "to-object-path": "^0.3.0",
172 | "union-value": "^1.0.0",
173 | "unset-value": "^1.0.0"
174 | }
175 | },
176 | "call-me-maybe": {
177 | "version": "1.0.1",
178 | "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
179 | "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
180 | "dev": true
181 | },
182 | "class-utils": {
183 | "version": "0.3.6",
184 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
185 | "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
186 | "dev": true,
187 | "requires": {
188 | "arr-union": "^3.1.0",
189 | "define-property": "^0.2.5",
190 | "isobject": "^3.0.0",
191 | "static-extend": "^0.1.1"
192 | },
193 | "dependencies": {
194 | "define-property": {
195 | "version": "0.2.5",
196 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
197 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
198 | "dev": true,
199 | "requires": {
200 | "is-descriptor": "^0.1.0"
201 | }
202 | }
203 | }
204 | },
205 | "collection-visit": {
206 | "version": "1.0.0",
207 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
208 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
209 | "dev": true,
210 | "requires": {
211 | "map-visit": "^1.0.0",
212 | "object-visit": "^1.0.0"
213 | }
214 | },
215 | "compare-versions": {
216 | "version": "2.0.1",
217 | "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-2.0.1.tgz",
218 | "integrity": "sha1-Htwfk2h/2XoyXFn1XkWgfbEGrKY=",
219 | "dev": true
220 | },
221 | "component-emitter": {
222 | "version": "1.2.1",
223 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
224 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
225 | "dev": true
226 | },
227 | "concat-map": {
228 | "version": "0.0.1",
229 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
230 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
231 | "dev": true
232 | },
233 | "copy-descriptor": {
234 | "version": "0.1.1",
235 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
236 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
237 | "dev": true
238 | },
239 | "debug": {
240 | "version": "2.6.9",
241 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
242 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
243 | "dev": true,
244 | "requires": {
245 | "ms": "2.0.0"
246 | }
247 | },
248 | "decode-uri-component": {
249 | "version": "0.2.0",
250 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
251 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
252 | "dev": true
253 | },
254 | "define-property": {
255 | "version": "2.0.2",
256 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
257 | "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
258 | "dev": true,
259 | "requires": {
260 | "is-descriptor": "^1.0.2",
261 | "isobject": "^3.0.1"
262 | },
263 | "dependencies": {
264 | "is-accessor-descriptor": {
265 | "version": "1.0.0",
266 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
267 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
268 | "dev": true,
269 | "requires": {
270 | "kind-of": "^6.0.0"
271 | }
272 | },
273 | "is-data-descriptor": {
274 | "version": "1.0.0",
275 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
276 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
277 | "dev": true,
278 | "requires": {
279 | "kind-of": "^6.0.0"
280 | }
281 | },
282 | "is-descriptor": {
283 | "version": "1.0.2",
284 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
285 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
286 | "dev": true,
287 | "requires": {
288 | "is-accessor-descriptor": "^1.0.0",
289 | "is-data-descriptor": "^1.0.0",
290 | "kind-of": "^6.0.2"
291 | }
292 | }
293 | }
294 | },
295 | "estree-walker": {
296 | "version": "0.2.1",
297 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz",
298 | "integrity": "sha1-va/oCVOD2EFNXcLs9MkXO225QS4=",
299 | "dev": true
300 | },
301 | "expand-brackets": {
302 | "version": "2.1.4",
303 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
304 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
305 | "dev": true,
306 | "requires": {
307 | "debug": "^2.3.3",
308 | "define-property": "^0.2.5",
309 | "extend-shallow": "^2.0.1",
310 | "posix-character-classes": "^0.1.0",
311 | "regex-not": "^1.0.0",
312 | "snapdragon": "^0.8.1",
313 | "to-regex": "^3.0.1"
314 | },
315 | "dependencies": {
316 | "define-property": {
317 | "version": "0.2.5",
318 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
319 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
320 | "dev": true,
321 | "requires": {
322 | "is-descriptor": "^0.1.0"
323 | }
324 | },
325 | "extend-shallow": {
326 | "version": "2.0.1",
327 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
328 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
329 | "dev": true,
330 | "requires": {
331 | "is-extendable": "^0.1.0"
332 | }
333 | }
334 | }
335 | },
336 | "extend-shallow": {
337 | "version": "3.0.2",
338 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
339 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
340 | "dev": true,
341 | "requires": {
342 | "assign-symbols": "^1.0.0",
343 | "is-extendable": "^1.0.1"
344 | },
345 | "dependencies": {
346 | "is-extendable": {
347 | "version": "1.0.1",
348 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
349 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
350 | "dev": true,
351 | "requires": {
352 | "is-plain-object": "^2.0.4"
353 | }
354 | }
355 | }
356 | },
357 | "extglob": {
358 | "version": "2.0.4",
359 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
360 | "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
361 | "dev": true,
362 | "requires": {
363 | "array-unique": "^0.3.2",
364 | "define-property": "^1.0.0",
365 | "expand-brackets": "^2.1.4",
366 | "extend-shallow": "^2.0.1",
367 | "fragment-cache": "^0.2.1",
368 | "regex-not": "^1.0.0",
369 | "snapdragon": "^0.8.1",
370 | "to-regex": "^3.0.1"
371 | },
372 | "dependencies": {
373 | "define-property": {
374 | "version": "1.0.0",
375 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
376 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
377 | "dev": true,
378 | "requires": {
379 | "is-descriptor": "^1.0.0"
380 | }
381 | },
382 | "extend-shallow": {
383 | "version": "2.0.1",
384 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
385 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
386 | "dev": true,
387 | "requires": {
388 | "is-extendable": "^0.1.0"
389 | }
390 | },
391 | "is-accessor-descriptor": {
392 | "version": "1.0.0",
393 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
394 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
395 | "dev": true,
396 | "requires": {
397 | "kind-of": "^6.0.0"
398 | }
399 | },
400 | "is-data-descriptor": {
401 | "version": "1.0.0",
402 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
403 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
404 | "dev": true,
405 | "requires": {
406 | "kind-of": "^6.0.0"
407 | }
408 | },
409 | "is-descriptor": {
410 | "version": "1.0.2",
411 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
412 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
413 | "dev": true,
414 | "requires": {
415 | "is-accessor-descriptor": "^1.0.0",
416 | "is-data-descriptor": "^1.0.0",
417 | "kind-of": "^6.0.2"
418 | }
419 | }
420 | }
421 | },
422 | "fast-glob": {
423 | "version": "2.2.2",
424 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz",
425 | "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==",
426 | "dev": true,
427 | "requires": {
428 | "@mrmlnc/readdir-enhanced": "^2.2.1",
429 | "@nodelib/fs.stat": "^1.0.1",
430 | "glob-parent": "^3.1.0",
431 | "is-glob": "^4.0.0",
432 | "merge2": "^1.2.1",
433 | "micromatch": "^3.1.10"
434 | }
435 | },
436 | "fill-range": {
437 | "version": "4.0.0",
438 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
439 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
440 | "dev": true,
441 | "requires": {
442 | "extend-shallow": "^2.0.1",
443 | "is-number": "^3.0.0",
444 | "repeat-string": "^1.6.1",
445 | "to-regex-range": "^2.1.0"
446 | },
447 | "dependencies": {
448 | "extend-shallow": {
449 | "version": "2.0.1",
450 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
451 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
452 | "dev": true,
453 | "requires": {
454 | "is-extendable": "^0.1.0"
455 | }
456 | }
457 | }
458 | },
459 | "for-in": {
460 | "version": "1.0.2",
461 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
462 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
463 | "dev": true
464 | },
465 | "fragment-cache": {
466 | "version": "0.2.1",
467 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
468 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
469 | "dev": true,
470 | "requires": {
471 | "map-cache": "^0.2.2"
472 | }
473 | },
474 | "fs-extra": {
475 | "version": "6.0.1",
476 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
477 | "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
478 | "dev": true,
479 | "requires": {
480 | "graceful-fs": "^4.1.2",
481 | "jsonfile": "^4.0.0",
482 | "universalify": "^0.1.0"
483 | }
484 | },
485 | "get-value": {
486 | "version": "2.0.6",
487 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
488 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
489 | "dev": true
490 | },
491 | "glob-parent": {
492 | "version": "3.1.0",
493 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
494 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
495 | "dev": true,
496 | "requires": {
497 | "is-glob": "^3.1.0",
498 | "path-dirname": "^1.0.0"
499 | },
500 | "dependencies": {
501 | "is-glob": {
502 | "version": "3.1.0",
503 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
504 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
505 | "dev": true,
506 | "requires": {
507 | "is-extglob": "^2.1.0"
508 | }
509 | }
510 | }
511 | },
512 | "glob-to-regexp": {
513 | "version": "0.3.0",
514 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
515 | "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
516 | "dev": true
517 | },
518 | "graceful-fs": {
519 | "version": "4.1.11",
520 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
521 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
522 | "dev": true
523 | },
524 | "has-value": {
525 | "version": "1.0.0",
526 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
527 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
528 | "dev": true,
529 | "requires": {
530 | "get-value": "^2.0.6",
531 | "has-values": "^1.0.0",
532 | "isobject": "^3.0.0"
533 | }
534 | },
535 | "has-values": {
536 | "version": "1.0.0",
537 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
538 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
539 | "dev": true,
540 | "requires": {
541 | "is-number": "^3.0.0",
542 | "kind-of": "^4.0.0"
543 | },
544 | "dependencies": {
545 | "kind-of": {
546 | "version": "4.0.0",
547 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
548 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
549 | "dev": true,
550 | "requires": {
551 | "is-buffer": "^1.1.5"
552 | }
553 | }
554 | }
555 | },
556 | "is-accessor-descriptor": {
557 | "version": "0.1.6",
558 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
559 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
560 | "dev": true,
561 | "requires": {
562 | "kind-of": "^3.0.2"
563 | },
564 | "dependencies": {
565 | "kind-of": {
566 | "version": "3.2.2",
567 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
568 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
569 | "dev": true,
570 | "requires": {
571 | "is-buffer": "^1.1.5"
572 | }
573 | }
574 | }
575 | },
576 | "is-buffer": {
577 | "version": "1.1.6",
578 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
579 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
580 | "dev": true
581 | },
582 | "is-data-descriptor": {
583 | "version": "0.1.4",
584 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
585 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
586 | "dev": true,
587 | "requires": {
588 | "kind-of": "^3.0.2"
589 | },
590 | "dependencies": {
591 | "kind-of": {
592 | "version": "3.2.2",
593 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
594 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
595 | "dev": true,
596 | "requires": {
597 | "is-buffer": "^1.1.5"
598 | }
599 | }
600 | }
601 | },
602 | "is-descriptor": {
603 | "version": "0.1.6",
604 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
605 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
606 | "dev": true,
607 | "requires": {
608 | "is-accessor-descriptor": "^0.1.6",
609 | "is-data-descriptor": "^0.1.4",
610 | "kind-of": "^5.0.0"
611 | },
612 | "dependencies": {
613 | "kind-of": {
614 | "version": "5.1.0",
615 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
616 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
617 | "dev": true
618 | }
619 | }
620 | },
621 | "is-extendable": {
622 | "version": "0.1.1",
623 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
624 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
625 | "dev": true
626 | },
627 | "is-extglob": {
628 | "version": "2.1.1",
629 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
630 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
631 | "dev": true
632 | },
633 | "is-glob": {
634 | "version": "4.0.0",
635 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
636 | "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
637 | "dev": true,
638 | "requires": {
639 | "is-extglob": "^2.1.1"
640 | }
641 | },
642 | "is-number": {
643 | "version": "3.0.0",
644 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
645 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
646 | "dev": true,
647 | "requires": {
648 | "kind-of": "^3.0.2"
649 | },
650 | "dependencies": {
651 | "kind-of": {
652 | "version": "3.2.2",
653 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
654 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
655 | "dev": true,
656 | "requires": {
657 | "is-buffer": "^1.1.5"
658 | }
659 | }
660 | }
661 | },
662 | "is-plain-object": {
663 | "version": "2.0.4",
664 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
665 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
666 | "dev": true,
667 | "requires": {
668 | "isobject": "^3.0.1"
669 | }
670 | },
671 | "is-windows": {
672 | "version": "1.0.2",
673 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
674 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
675 | "dev": true
676 | },
677 | "isarray": {
678 | "version": "1.0.0",
679 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
680 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
681 | "dev": true
682 | },
683 | "isobject": {
684 | "version": "3.0.1",
685 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
686 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
687 | "dev": true
688 | },
689 | "jsonfile": {
690 | "version": "4.0.0",
691 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
692 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
693 | "dev": true,
694 | "requires": {
695 | "graceful-fs": "^4.1.6"
696 | }
697 | },
698 | "kind-of": {
699 | "version": "6.0.2",
700 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
701 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
702 | "dev": true
703 | },
704 | "map-cache": {
705 | "version": "0.2.2",
706 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
707 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
708 | "dev": true
709 | },
710 | "map-visit": {
711 | "version": "1.0.0",
712 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
713 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
714 | "dev": true,
715 | "requires": {
716 | "object-visit": "^1.0.0"
717 | }
718 | },
719 | "merge2": {
720 | "version": "1.2.2",
721 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz",
722 | "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==",
723 | "dev": true
724 | },
725 | "micromatch": {
726 | "version": "3.1.10",
727 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
728 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
729 | "dev": true,
730 | "requires": {
731 | "arr-diff": "^4.0.0",
732 | "array-unique": "^0.3.2",
733 | "braces": "^2.3.1",
734 | "define-property": "^2.0.2",
735 | "extend-shallow": "^3.0.2",
736 | "extglob": "^2.0.4",
737 | "fragment-cache": "^0.2.1",
738 | "kind-of": "^6.0.2",
739 | "nanomatch": "^1.2.9",
740 | "object.pick": "^1.3.0",
741 | "regex-not": "^1.0.0",
742 | "snapdragon": "^0.8.1",
743 | "to-regex": "^3.0.2"
744 | }
745 | },
746 | "minimatch": {
747 | "version": "3.0.4",
748 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
749 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
750 | "dev": true,
751 | "requires": {
752 | "brace-expansion": "^1.1.7"
753 | }
754 | },
755 | "mixin-deep": {
756 | "version": "1.3.1",
757 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
758 | "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
759 | "dev": true,
760 | "requires": {
761 | "for-in": "^1.0.2",
762 | "is-extendable": "^1.0.1"
763 | },
764 | "dependencies": {
765 | "is-extendable": {
766 | "version": "1.0.1",
767 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
768 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
769 | "dev": true,
770 | "requires": {
771 | "is-plain-object": "^2.0.4"
772 | }
773 | }
774 | }
775 | },
776 | "ms": {
777 | "version": "2.0.0",
778 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
779 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
780 | "dev": true
781 | },
782 | "nanomatch": {
783 | "version": "1.2.13",
784 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
785 | "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
786 | "dev": true,
787 | "requires": {
788 | "arr-diff": "^4.0.0",
789 | "array-unique": "^0.3.2",
790 | "define-property": "^2.0.2",
791 | "extend-shallow": "^3.0.2",
792 | "fragment-cache": "^0.2.1",
793 | "is-windows": "^1.0.2",
794 | "kind-of": "^6.0.2",
795 | "object.pick": "^1.3.0",
796 | "regex-not": "^1.0.0",
797 | "snapdragon": "^0.8.1",
798 | "to-regex": "^3.0.1"
799 | }
800 | },
801 | "object-assign": {
802 | "version": "4.1.1",
803 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
804 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
805 | "dev": true
806 | },
807 | "object-copy": {
808 | "version": "0.1.0",
809 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
810 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
811 | "dev": true,
812 | "requires": {
813 | "copy-descriptor": "^0.1.0",
814 | "define-property": "^0.2.5",
815 | "kind-of": "^3.0.3"
816 | },
817 | "dependencies": {
818 | "define-property": {
819 | "version": "0.2.5",
820 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
821 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
822 | "dev": true,
823 | "requires": {
824 | "is-descriptor": "^0.1.0"
825 | }
826 | },
827 | "kind-of": {
828 | "version": "3.2.2",
829 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
830 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
831 | "dev": true,
832 | "requires": {
833 | "is-buffer": "^1.1.5"
834 | }
835 | }
836 | }
837 | },
838 | "object-visit": {
839 | "version": "1.0.1",
840 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
841 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
842 | "dev": true,
843 | "requires": {
844 | "isobject": "^3.0.0"
845 | }
846 | },
847 | "object.pick": {
848 | "version": "1.3.0",
849 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
850 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
851 | "dev": true,
852 | "requires": {
853 | "isobject": "^3.0.1"
854 | }
855 | },
856 | "pascalcase": {
857 | "version": "0.1.1",
858 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
859 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
860 | "dev": true
861 | },
862 | "path-dirname": {
863 | "version": "1.0.2",
864 | "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
865 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
866 | "dev": true
867 | },
868 | "posix-character-classes": {
869 | "version": "0.1.1",
870 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
871 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
872 | "dev": true
873 | },
874 | "regex-not": {
875 | "version": "1.0.2",
876 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
877 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
878 | "dev": true,
879 | "requires": {
880 | "extend-shallow": "^3.0.2",
881 | "safe-regex": "^1.1.0"
882 | }
883 | },
884 | "repeat-element": {
885 | "version": "1.1.3",
886 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
887 | "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
888 | "dev": true
889 | },
890 | "repeat-string": {
891 | "version": "1.6.1",
892 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
893 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
894 | "dev": true
895 | },
896 | "resolve-url": {
897 | "version": "0.2.1",
898 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
899 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
900 | "dev": true
901 | },
902 | "ret": {
903 | "version": "0.1.15",
904 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
905 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
906 | "dev": true
907 | },
908 | "rollup": {
909 | "version": "0.56.5",
910 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.56.5.tgz",
911 | "integrity": "sha512-IGPk5vdWrsc4vkiW9XMeXr5QMtxmvATTttTi59w2jBQWe9G/MMQtn8teIBAj+DdK51TrpVT6P0aQUaQUlUYCJA==",
912 | "dev": true
913 | },
914 | "rollup-plugin-typescript": {
915 | "version": "0.8.1",
916 | "resolved": "https://registry.npmjs.org/rollup-plugin-typescript/-/rollup-plugin-typescript-0.8.1.tgz",
917 | "integrity": "sha1-L/fuzCHPa7K0P8J+W2iJUs5xkko=",
918 | "dev": true,
919 | "requires": {
920 | "compare-versions": "2.0.1",
921 | "object-assign": "^4.0.1",
922 | "rollup-pluginutils": "^1.3.1",
923 | "tippex": "^2.1.1",
924 | "typescript": "^1.8.9"
925 | },
926 | "dependencies": {
927 | "typescript": {
928 | "version": "1.8.10",
929 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-1.8.10.tgz",
930 | "integrity": "sha1-tHXW4N/wv1DyluXKbvn7tccyDx4=",
931 | "dev": true
932 | }
933 | }
934 | },
935 | "rollup-pluginutils": {
936 | "version": "1.5.2",
937 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz",
938 | "integrity": "sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=",
939 | "dev": true,
940 | "requires": {
941 | "estree-walker": "^0.2.1",
942 | "minimatch": "^3.0.2"
943 | }
944 | },
945 | "safe-regex": {
946 | "version": "1.1.0",
947 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
948 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
949 | "dev": true,
950 | "requires": {
951 | "ret": "~0.1.10"
952 | }
953 | },
954 | "set-value": {
955 | "version": "2.0.0",
956 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
957 | "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
958 | "dev": true,
959 | "requires": {
960 | "extend-shallow": "^2.0.1",
961 | "is-extendable": "^0.1.1",
962 | "is-plain-object": "^2.0.3",
963 | "split-string": "^3.0.1"
964 | },
965 | "dependencies": {
966 | "extend-shallow": {
967 | "version": "2.0.1",
968 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
969 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
970 | "dev": true,
971 | "requires": {
972 | "is-extendable": "^0.1.0"
973 | }
974 | }
975 | }
976 | },
977 | "snapdragon": {
978 | "version": "0.8.2",
979 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
980 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
981 | "dev": true,
982 | "requires": {
983 | "base": "^0.11.1",
984 | "debug": "^2.2.0",
985 | "define-property": "^0.2.5",
986 | "extend-shallow": "^2.0.1",
987 | "map-cache": "^0.2.2",
988 | "source-map": "^0.5.6",
989 | "source-map-resolve": "^0.5.0",
990 | "use": "^3.1.0"
991 | },
992 | "dependencies": {
993 | "define-property": {
994 | "version": "0.2.5",
995 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
996 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
997 | "dev": true,
998 | "requires": {
999 | "is-descriptor": "^0.1.0"
1000 | }
1001 | },
1002 | "extend-shallow": {
1003 | "version": "2.0.1",
1004 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1005 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1006 | "dev": true,
1007 | "requires": {
1008 | "is-extendable": "^0.1.0"
1009 | }
1010 | }
1011 | }
1012 | },
1013 | "snapdragon-node": {
1014 | "version": "2.1.1",
1015 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
1016 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
1017 | "dev": true,
1018 | "requires": {
1019 | "define-property": "^1.0.0",
1020 | "isobject": "^3.0.0",
1021 | "snapdragon-util": "^3.0.1"
1022 | },
1023 | "dependencies": {
1024 | "define-property": {
1025 | "version": "1.0.0",
1026 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
1027 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
1028 | "dev": true,
1029 | "requires": {
1030 | "is-descriptor": "^1.0.0"
1031 | }
1032 | },
1033 | "is-accessor-descriptor": {
1034 | "version": "1.0.0",
1035 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
1036 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
1037 | "dev": true,
1038 | "requires": {
1039 | "kind-of": "^6.0.0"
1040 | }
1041 | },
1042 | "is-data-descriptor": {
1043 | "version": "1.0.0",
1044 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
1045 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
1046 | "dev": true,
1047 | "requires": {
1048 | "kind-of": "^6.0.0"
1049 | }
1050 | },
1051 | "is-descriptor": {
1052 | "version": "1.0.2",
1053 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
1054 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
1055 | "dev": true,
1056 | "requires": {
1057 | "is-accessor-descriptor": "^1.0.0",
1058 | "is-data-descriptor": "^1.0.0",
1059 | "kind-of": "^6.0.2"
1060 | }
1061 | }
1062 | }
1063 | },
1064 | "snapdragon-util": {
1065 | "version": "3.0.1",
1066 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
1067 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
1068 | "dev": true,
1069 | "requires": {
1070 | "kind-of": "^3.2.0"
1071 | },
1072 | "dependencies": {
1073 | "kind-of": {
1074 | "version": "3.2.2",
1075 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1076 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1077 | "dev": true,
1078 | "requires": {
1079 | "is-buffer": "^1.1.5"
1080 | }
1081 | }
1082 | }
1083 | },
1084 | "source-map": {
1085 | "version": "0.5.7",
1086 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
1087 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
1088 | "dev": true
1089 | },
1090 | "source-map-resolve": {
1091 | "version": "0.5.2",
1092 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
1093 | "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
1094 | "dev": true,
1095 | "requires": {
1096 | "atob": "^2.1.1",
1097 | "decode-uri-component": "^0.2.0",
1098 | "resolve-url": "^0.2.1",
1099 | "source-map-url": "^0.4.0",
1100 | "urix": "^0.1.0"
1101 | }
1102 | },
1103 | "source-map-url": {
1104 | "version": "0.4.0",
1105 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
1106 | "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
1107 | "dev": true
1108 | },
1109 | "split-string": {
1110 | "version": "3.1.0",
1111 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
1112 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
1113 | "dev": true,
1114 | "requires": {
1115 | "extend-shallow": "^3.0.0"
1116 | }
1117 | },
1118 | "static-extend": {
1119 | "version": "0.1.2",
1120 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
1121 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
1122 | "dev": true,
1123 | "requires": {
1124 | "define-property": "^0.2.5",
1125 | "object-copy": "^0.1.0"
1126 | },
1127 | "dependencies": {
1128 | "define-property": {
1129 | "version": "0.2.5",
1130 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
1131 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
1132 | "dev": true,
1133 | "requires": {
1134 | "is-descriptor": "^0.1.0"
1135 | }
1136 | }
1137 | }
1138 | },
1139 | "tippex": {
1140 | "version": "2.3.1",
1141 | "resolved": "https://registry.npmjs.org/tippex/-/tippex-2.3.1.tgz",
1142 | "integrity": "sha1-ov1bcIfXy/sgyYBqbBYQjCwPr9o=",
1143 | "dev": true
1144 | },
1145 | "to-object-path": {
1146 | "version": "0.3.0",
1147 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
1148 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
1149 | "dev": true,
1150 | "requires": {
1151 | "kind-of": "^3.0.2"
1152 | },
1153 | "dependencies": {
1154 | "kind-of": {
1155 | "version": "3.2.2",
1156 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1157 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1158 | "dev": true,
1159 | "requires": {
1160 | "is-buffer": "^1.1.5"
1161 | }
1162 | }
1163 | }
1164 | },
1165 | "to-regex": {
1166 | "version": "3.0.2",
1167 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
1168 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
1169 | "dev": true,
1170 | "requires": {
1171 | "define-property": "^2.0.2",
1172 | "extend-shallow": "^3.0.2",
1173 | "regex-not": "^1.0.2",
1174 | "safe-regex": "^1.1.0"
1175 | }
1176 | },
1177 | "to-regex-range": {
1178 | "version": "2.1.1",
1179 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
1180 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
1181 | "dev": true,
1182 | "requires": {
1183 | "is-number": "^3.0.0",
1184 | "repeat-string": "^1.6.1"
1185 | }
1186 | },
1187 | "typescript": {
1188 | "version": "2.8.1",
1189 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.1.tgz",
1190 | "integrity": "sha512-Ao/f6d/4EPLq0YwzsQz8iXflezpTkQzqAyenTiw4kCUGr1uPiFLC3+fZ+gMZz6eeI/qdRUqvC+HxIJzUAzEFdg==",
1191 | "dev": true
1192 | },
1193 | "union-value": {
1194 | "version": "1.0.0",
1195 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
1196 | "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
1197 | "dev": true,
1198 | "requires": {
1199 | "arr-union": "^3.1.0",
1200 | "get-value": "^2.0.6",
1201 | "is-extendable": "^0.1.1",
1202 | "set-value": "^0.4.3"
1203 | },
1204 | "dependencies": {
1205 | "extend-shallow": {
1206 | "version": "2.0.1",
1207 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1208 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1209 | "dev": true,
1210 | "requires": {
1211 | "is-extendable": "^0.1.0"
1212 | }
1213 | },
1214 | "set-value": {
1215 | "version": "0.4.3",
1216 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
1217 | "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
1218 | "dev": true,
1219 | "requires": {
1220 | "extend-shallow": "^2.0.1",
1221 | "is-extendable": "^0.1.1",
1222 | "is-plain-object": "^2.0.1",
1223 | "to-object-path": "^0.3.0"
1224 | }
1225 | }
1226 | }
1227 | },
1228 | "universalify": {
1229 | "version": "0.1.2",
1230 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
1231 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
1232 | "dev": true
1233 | },
1234 | "unset-value": {
1235 | "version": "1.0.0",
1236 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
1237 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
1238 | "dev": true,
1239 | "requires": {
1240 | "has-value": "^0.3.1",
1241 | "isobject": "^3.0.0"
1242 | },
1243 | "dependencies": {
1244 | "has-value": {
1245 | "version": "0.3.1",
1246 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
1247 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
1248 | "dev": true,
1249 | "requires": {
1250 | "get-value": "^2.0.3",
1251 | "has-values": "^0.1.4",
1252 | "isobject": "^2.0.0"
1253 | },
1254 | "dependencies": {
1255 | "isobject": {
1256 | "version": "2.1.0",
1257 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
1258 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
1259 | "dev": true,
1260 | "requires": {
1261 | "isarray": "1.0.0"
1262 | }
1263 | }
1264 | }
1265 | },
1266 | "has-values": {
1267 | "version": "0.1.4",
1268 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
1269 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
1270 | "dev": true
1271 | }
1272 | }
1273 | },
1274 | "urix": {
1275 | "version": "0.1.0",
1276 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
1277 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
1278 | "dev": true
1279 | },
1280 | "use": {
1281 | "version": "3.1.1",
1282 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
1283 | "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
1284 | "dev": true
1285 | }
1286 | }
1287 | }
1288 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "mpreact",
3 | "version": "0.0.5",
4 | "description": "react like framework for mini program",
5 | "main": "lib/index.js",
6 | "files": [
7 | "./lib/index.js",
8 | "./types/**/*",
9 | "./index.d.ts"
10 | ],
11 | "scripts": {
12 | "build": "node node_modules/rollup/bin/rollup -c"
13 | },
14 | "keywords": [
15 | "jsx",
16 | "typescript",
17 | "mini-program"
18 | ],
19 | "author": "qinjia@outlook.com",
20 | "license": "ISC",
21 | "devDependencies": {
22 | "fast-glob": "^2.2.2",
23 | "fs-extra": "^6.0.1",
24 | "rollup": "^0.56.5",
25 | "rollup-plugin-typescript": "^0.8.1",
26 | "typescript": "^2.7.2"
27 | },
28 | "dependencies": {},
29 | "types": "./index.d.ts"
30 | }
31 |
--------------------------------------------------------------------------------
/rollup.config.js:
--------------------------------------------------------------------------------
1 | import typescript from 'rollup-plugin-typescript';
2 |
3 | export default {
4 | input: 'src/index.ts',
5 | output: {
6 | format: 'umd',
7 | file: 'lib/index.js',
8 | name: 'mpreact',
9 | },
10 | plugins: [
11 | typescript()
12 | ]
13 | }
--------------------------------------------------------------------------------
/src/core/app.ts:
--------------------------------------------------------------------------------
1 |
2 | interface AppOptions {
3 | /**
4 | * 打开小程序的路径
5 | */
6 | path: string;
7 | /**
8 | * 打开小程序的query
9 | */
10 | query: { [field: string]: number | string | boolean };
11 | /**
12 | * 打开小程序的场景值
13 | */
14 | scene: number;
15 | /**
16 | * shareTicket,详见 获取更多转发信息
17 | */
18 | shareTicket: string;
19 | /**
20 | * 当场景为由从另一个小程序或公众号或App打开时,返回此字段
21 | */
22 | referrerInfo: {
23 | /**
24 | * 来源小程序或公众号或App的 appId,详见下方说明
25 | */
26 | appId: string
27 | /**
28 | * 来源小程序传过来的数据,scene=1037或1038时支持
29 | */
30 | extraData: object;
31 | }
32 | }
33 |
34 | interface App {
35 | globalData: any;
36 |
37 | setData(data: any, cb?: Function): void;
38 | }
39 |
40 | export abstract class WxApp {
41 |
42 | constructor(private app: App, public options?: AppOptions) {
43 |
44 | }
45 |
46 | }
47 |
48 | export function AppConfig(config: {
49 | /**
50 | * 设置页面路径
51 | */
52 | pages: Array;
53 | /**
54 | * 设置默认页面的窗口表现
55 | */
56 | window?: {
57 | /**
58 | * #000000 导航栏背景颜色,如#000000
59 | */
60 | navigationBarBackgroundColor?: string;
61 | /**
62 | * white 导航栏标题颜色,仅支持 black/white
63 | */
64 | navigationBarTextStyle?: string;
65 | /**
66 | * 导航栏标题文字内容
67 | */
68 | navigationBarTitleText?: string;
69 | /**
70 | * default 导航栏样式,仅支持 default/custom。custom 模式可自定义导航栏,只保留右上角胶囊状的按钮 微信版本 6.6.0
71 | */
72 | navigationStyle?: string;
73 | /**
74 | * #ffffff 窗口的背景色
75 | */
76 | backgroundColor?: string;
77 | /**
78 | * dark 下拉背景字体、loading 图的样式,仅支持 dark/light
79 | */
80 | backgroundTextStyle?: string;
81 | /**
82 | * #ffffff 顶部窗口的背景色,仅 iOS 支持 微信版本 6.5.16
83 | */
84 | backgroundColorTop?: string;
85 | /**
86 | * #ffffff 底部窗口的背景色,仅 iOS 支持 微信版本 6.5.16
87 | */
88 | backgroundColorBottom?: string;
89 | /**
90 | * false 是否开启下拉刷新,详见页面相关事件处理函数
91 | */
92 | enablePullDownRefresh?: boolean;
93 | /**
94 | * 50 页面上拉触底事件触发时距页面底部距离,单位为px
95 | */
96 | onReachBottomDistance?: number;
97 | };
98 | /**
99 | * 设置底部 tab 的表现
100 | */
101 | tabBar?: {
102 | /**
103 | * tab 上的文字默认颜色
104 | */
105 | color: string;
106 | /**
107 | * tab 上的文字选中时的颜色
108 | */
109 | selectedColor: string;
110 | /**
111 | * tab 的背景色
112 | */
113 | backgroundColor: string;
114 | /**
115 | * black tabbar上边框的颜色, 仅支持 black/white
116 | */
117 | borderStyle?: string;
118 | /**
119 | * tab 的列表,详见 list 属性说明,最少2个、最多5个 tab
120 | */
121 | list: Array<{
122 | /**
123 | * 页面路径,必须在 pages 中先定义
124 | */
125 | pagePath: string;
126 | /**
127 | * tab 上按钮文字
128 | */
129 | text: string;
130 | /**
131 | * 图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px,当 postion 为 top 时,此参数无效,不支持网络图片
132 | */
133 | iconPath?: string;
134 | /**
135 | * 选中时的图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px ,当 postion 为 top 时,此参数无效
136 | */
137 | selectedIconPath?: string
138 | }>;
139 | /**
140 | *bottom 可选值 bottom、top
141 | */
142 | position?: string;
143 | };
144 | /**
145 | * 设置网络超时时间
146 | */
147 | networkTimeout?: {
148 | /**
149 | * wx.request的超时时间,单位毫秒,默认为:60000
150 | */
151 | request?: number;
152 | /**
153 | * wx.connectSocket的超时时间,单位毫秒,默认为:60000
154 | */
155 | connectSocket?: number;
156 | /**
157 | * wx.uploadFile的超时时间,单位毫秒,默认为:60000
158 | */
159 | uploadFile?: number;
160 | /**
161 | * wx.downloadFile的超时时间,单位毫秒,默认为:60000
162 | */
163 | downloadFile?: number;
164 | };
165 | /**
166 | * 设置是否开启 debug 模式
167 | */
168 | debug?: boolean;
169 | }) {
170 | return (constructor: T) => {
171 | return class extends constructor {
172 | config = config;
173 | }
174 | }
175 | }
--------------------------------------------------------------------------------
/src/core/component.ts:
--------------------------------------------------------------------------------
1 | interface Component {
2 | /**
3 | * 组件的文件路径
4 | */
5 | is: string;
6 | /**
7 | * 节点id
8 | */
9 | id: string;
10 | /**
11 | * 节点dataset
12 | */
13 | dataset: string;
14 | /**
15 | * 组件数据,包括内部数据和属性值
16 | */
17 | data: S;
18 | properties: any;
19 | methods: {
20 | [method: string]: Function;
21 | };
22 | /**
23 | *
24 | * 设置data并执行视图层渲染
25 | */
26 | setData: (data: Partial, cb?: Function) => void;
27 | /**
28 | * 检查组件是否具有 behavior (检查时会递归检查被直接或间接引入的所有behavior)
29 | */
30 | hasBehavior: (behavior: object) => boolean;
31 | /**
32 | *
33 | * 触发事件,参见 组件事件
34 | */
35 | triggerEvent: (name: string, detail: object, options: any) => void;
36 | /**
37 | * 创建一个 SelectorQuery 对象,选择器选取范围为这个组件实例内
38 | */
39 | createSelectorQuery: () => any;
40 | /**
41 | * 使用选择器选择组件实例节点,返回匹配到的第一个组件实例对象
42 | */
43 | selectComponent: (selector: string) => void;
44 | /**
45 | * 使用选择器选择组件实例节点,返回匹配到的全部组件实例对象组成的数组
46 | */
47 | selectAllComponents: (selector: string) => void;
48 | /**
49 | * 获取所有这个关系对应的所有关联节点,参见 组件间关系
50 | */
51 | getRelationNodes: (relationKey: string) => Array;
52 | }
53 |
54 | export abstract class WxComponent{
55 |
56 | props: P;
57 |
58 | state: Partial = {};
59 |
60 | abstract template: JSX.Element;
61 |
62 | mounted?(): void;
63 |
64 | constructor(public component: Component) {
65 | this.props = Object.assign({}, this.component.properties);
66 | [
67 | // 实例方法
68 | ...Object.getOwnPropertyNames(Object.getPrototypeOf(this)),
69 | ].forEach(method => {
70 | if (typeof this[method] == "function" && ['constructor', 'mounted'].indexOf(method) === -1) {
71 | component[method] = this[method].bind(this);
72 | }
73 | });
74 | }
75 |
76 | setState(state: Partial, cb?: Function) {
77 | this.state = Object.assign({}, this.state, state);
78 | this.component.setData(state, () => {
79 | cb && cb();
80 | });
81 | }
82 |
83 | }
84 |
--------------------------------------------------------------------------------
/src/core/page.ts:
--------------------------------------------------------------------------------
1 | interface Page {
2 | data: S;
3 | setData(data: Partial, cb?: Function): void;
4 | }
5 |
6 | /**
7 | * 小程序Page类, P为page query,S为Page state
8 | */
9 | export abstract class WxPage
{
10 |
11 | state: Partial;
12 | query: P;
13 |
14 | constructor(private page: Page, options: P) {
15 | this.query = options;
16 |
17 | [
18 | // 实例方法
19 | ...Object.getOwnPropertyNames(Object.getPrototypeOf(this)),
20 | ].forEach(method => {
21 | if (typeof this[method] == "function" && ['constructor', 'mounted'].indexOf(method) === -1) {
22 | page[method] = this[method].bind(this);
23 | }
24 | });
25 |
26 | }
27 |
28 | abstract template: JSX.Element;
29 |
30 | mounted?(): void;
31 |
32 | setState(state: Partial, cb?: Function) {
33 | this.state = Object.assign({}, this.state, state);
34 | return new Promise((resolve, reject) => {
35 | this.page.setData(state, () => {
36 | cb && cb();
37 | resolve();
38 | })
39 | })
40 | }
41 |
42 | navigateTo(page: string, query: { [key: string]: number | string | boolean } = {}) {
43 | let url = page + `?${Object.keys(query).map(key => `${key}=${query[key]}`).join('&')}`;
44 | return wx.navigateTo({ url });
45 | }
46 |
47 | redirectTo(page: string, query: { [key: string]: number | string | boolean } = {}) {
48 | let url = page + `?${Object.keys(query).map(key => `${key}=${query[key]}`).join('&')}`;
49 | return wx.redirectTo({ url });
50 | }
51 |
52 | setTitle(title: string) {
53 | wx.setNavigationBarTitle({ title })
54 | }
55 | }
56 |
57 | export function PageConfig(config: {
58 | /**
59 | * #000000 导航栏背景颜色,如"#000000"
60 | */
61 | navigationBarBackgroundColor?: string;
62 | /**
63 | * white 导航栏标题颜色,仅支持 black/white
64 | */
65 | navigationBarTextStyle?: string;
66 | /**
67 | * 导航栏标题文字内容
68 | */
69 | navigationBarTitleText?: string;
70 | /**
71 | * #ffffff 窗口的背景色
72 | */
73 | backgroundColor?: string;
74 | /**
75 | * dark 下拉背景字体、loading 图的样式,仅支持 dark/light
76 | */
77 | backgroundTextStyle?: string;
78 | /**
79 | * false 是否开启下拉刷新,详见页面相关事件处理函数。
80 | */
81 | enablePullDownRefresh?: boolean;
82 | /**
83 | * false 设置为 true 则页面整体不能上下滚动;只在 page.json 中有效,无法在 app.json 中设置该项
84 | */
85 | disableScroll?: boolean;
86 | /**
87 | * 50 页面上拉触底事件触发时距页面底部距离,单位为px
88 | */
89 | onReachBottomDistance?: number;
90 | }) {
91 | return (constructor: T) => {
92 | return class extends constructor {
93 | }
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/src/core/wx.ts:
--------------------------------------------------------------------------------
1 | import { WxApp } from "./app";
2 | import { WxPage } from "./page";
3 |
4 | declare var getApp;
5 | declare var getCurrentPages;
6 |
7 | interface ExtendApi {
8 | getApp: () => WxApp;
9 | getCurrentPages: () => Array>;
10 | sleep: (time: number) => Promise;
11 | }
12 |
13 | function isSyncApi(api: string): boolean {
14 | return /^(on|create|stop|pause|hide)/.test(api)
15 | || /Sync$/.test(api)
16 | || ["pageScrollTo", "showNavigationBarLoading", "navigateBack"].indexOf(api) !== -1;
17 | }
18 |
19 | function promisifyWxApi() {
20 | // 命令空间
21 | let ns = {} as ExtendApi;
22 |
23 | Object.keys(wx).forEach(api => {
24 | if (!isSyncApi(api)) {
25 | ns[api] = function (obj: any = {}, ...args) {
26 | return new Promise((resolve, reject) => {
27 | obj.success = resolve;
28 | obj.fail = reject;
29 | wx[api](obj, ...args);
30 | });
31 | }
32 | } else {
33 | ns[api] = wx[api];
34 | }
35 | });
36 |
37 | ns.getApp = function () {
38 | return getApp();
39 | };
40 |
41 | ns.getCurrentPages = function () {
42 | return getCurrentPages();
43 | };
44 |
45 | ns.sleep = function (time = 500) {
46 | return new Promise((resolve, reject) => {
47 | setTimeout(() => {
48 | resolve();
49 | }, time)
50 | })
51 | };
52 |
53 | return ns;
54 | };
55 |
56 | export default promisifyWxApi();
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import wx from "./core/wx";
2 |
3 | export { WxComponent } from "./core/component";
4 | export { WxPage } from "./core/page";
5 | export { WxApp } from "./core/app";
6 |
7 | export default wx;
--------------------------------------------------------------------------------
/test/index.tsx:
--------------------------------------------------------------------------------
1 | import wx, { WxApp, WxComponent, WxPage } from "../index"
2 |
3 | export class App extends WxApp {
4 |
5 | }
6 |
7 | export class Page extends WxPage<{}, {}> {
8 |
9 | template = (
10 |
11 |
12 |
13 | );
14 |
15 | mounted() {
16 |
17 | }
18 |
19 |
20 | }
21 |
22 | export class Component extends WxComponent<{ name: string; age: number }, {}> {
23 |
24 | template = (
25 |
26 | );
27 |
28 | }
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es2015",
4 | "module": "commonjs",
5 | "jsx": "preserve",
6 | "strictNullChecks": false
7 | }
8 | }
--------------------------------------------------------------------------------
/types/wx.d.ts:
--------------------------------------------------------------------------------
1 | /************************************************
2 | * *
3 | * 微信小程序 API *
4 | * *
5 | ************************************************/
6 |
7 | declare namespace wx {
8 |
9 | interface WxAnimation {
10 | /**
11 | * 透明度,参数范围 0~1
12 | */
13 | opacity(value: number): WxAnimation;
14 | /**
15 | * 颜色值
16 | */
17 | backgroundColor(color: string): WxAnimation;
18 | /**
19 | * 长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值
20 | */
21 | width(length: number): WxAnimation;
22 | /**
23 | * 长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值
24 | */
25 | height(length: number): WxAnimation;
26 | /**
27 | * 长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值
28 | */
29 | top(length: number): WxAnimation;
30 | /**
31 | * 长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值
32 | */
33 | left(length: number): WxAnimation;
34 | /**
35 | * 长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值
36 | */
37 | bottom(length: number): WxAnimation;
38 | /**
39 | * 长度值,如果传入 Number 则默认使用 px,可传入其他自定义单位的长度值
40 | */
41 | right(length: number): WxAnimation;
42 | /**
43 | * deg的范围-180~180,从原点顺时针旋转一个deg角度
44 | */
45 | rotate(deg: number): WxAnimation;
46 | /**
47 | * deg的范围-180~180,在X轴旋转一个deg角度
48 | */
49 | rotateX(deg: number): WxAnimation;
50 | /**
51 | * deg的范围-180~180,在Y轴旋转一个deg角度
52 | */
53 | rotateY(deg: number): WxAnimation;
54 | /**
55 | * deg的范围-180~180,在Z轴旋转一个deg角度
56 | */
57 | rotateZ(deg: number): WxAnimation;
58 | /**
59 | * 同transform-function rotate3d
60 | */
61 | rotate3d(x: number, y: number, z: number, deg: number): WxAnimation;
62 | /**
63 | * 一个参数时,表示在X轴、Y轴同时缩放sx倍数;两个参数时表示在X轴缩放sx倍数,在Y轴缩放sy倍数
64 | */
65 | scale(sx: number, sy?: number): WxAnimation;
66 | /**
67 | * 在X轴缩放sx倍数
68 | */
69 | scaleX(sx: number): WxAnimation;
70 | /**
71 | * 在Y轴缩放sy倍数
72 | */
73 | scaleY(sy: number): WxAnimation;
74 | /**
75 | * 在Z轴缩放sy倍数
76 | */
77 | scaleZ(sz: number): WxAnimation;
78 | /**
79 | * 在X轴缩放sx倍数,在Y轴缩放sy倍数,在Z轴缩放sz倍数
80 | */
81 | scale3d(sx: number, sy: number, sz: number): WxAnimation;
82 | /**
83 | * 一个参数时,表示在X轴偏移tx,单位px;两个参数时,表示在X轴偏移tx,在Y轴偏移ty,单位px。
84 | */
85 | translate(tx: number, ty?: number): WxAnimation;
86 | /**
87 | * 在X轴偏移tx,单位px
88 | */
89 | translateX(tx: number): WxAnimation;
90 | /**
91 | * 在Y轴偏移tx,单位px
92 | */
93 | translateY(tx: number): WxAnimation;
94 | /**
95 | * 在Z轴偏移tx,单位px
96 | */
97 | translateZ(tx: number): WxAnimation;
98 | /**
99 | * 在X轴偏移tx,在Y轴偏移ty,在Z轴偏移tz,单位px
100 | */
101 | translate3d(tx: number, ty: number, tz: number): WxAnimation;
102 | /**
103 | * 参数范围-180~180;一个参数时,Y轴坐标不变,X轴坐标延顺时针倾斜ax度;两个参数时,分别在X轴倾斜ax度,在Y轴倾斜ay度
104 | */
105 | skew(ax: number, ay?: number): WxAnimation;
106 | /**
107 | * 参数范围-180~180;Y轴坐标不变,X轴坐标延顺时针倾斜ax度
108 | */
109 | skewX(ax: number): WxAnimation;
110 | /**
111 | * 参数范围-180~180;X轴坐标不变,Y轴坐标延顺时针倾斜ay度
112 | */
113 | skewY(ay: number): WxAnimation;
114 | /**
115 | * 同transform-function matrix
116 | */
117 | matrix(a: number, b: number, c: number, d: number, tx: number, ty: number): WxAnimation;
118 | /**
119 | * 同transform-function matrix3d
120 | */
121 | matrix3d(): WxAnimation;
122 | }
123 |
124 | interface WxCanvasContext {
125 | /**
126 | * 设置填充色, 如果没有设置 fillStyle,默认颜色为 black。
127 | */
128 | setFillStyle(color: string): void;
129 | /**
130 | * 设置边框颜色, 如果没有设置 fillStyle,默认颜色为 black。
131 | */
132 | setStrokeStyle(color: string): void;
133 | /**
134 | * 设置阴影
135 | */
136 | setShadow(offsetX: number, offsetY: number, blur: number, color: string): void;
137 | /**
138 | * 创建一个线性的渐变颜色。需要使用 addColorStop() 来指定渐变点,至少要两个。
139 | */
140 | createLinearGradient(x0: number, y0: number, x1: number, y1: number): void;
141 | /**
142 | * 创建一个圆形的渐变颜色。 起点在圆心,终点在圆环。 需要使用 addColorStop() 来指定渐变点,至少要两个。
143 | */
144 | createCircularGradient(x: number, y: number, r: number): void;
145 | /**
146 | * 创建一个颜色的渐变点。小于最小 stop 的部分会按最小 stop 的 color 来渲染,大于最大 stop 的部分会按最大 stop 的 color 来渲染。需要使用 addColorStop() 来指定渐变点,至少要两个。
147 | */
148 | addColorStop(stop: number, color: string): void;
149 | /**
150 | * 设置线条端点的样式
151 | */
152 | setLineCap(lineCap: 'butt' | 'round' | 'square'): void;
153 | /**
154 | * 设置两线相交处的样式
155 | */
156 | setLineJoin(lineJoin: 'bevel' | 'round' | 'miter'): void;
157 | /**
158 | * 设置线条宽度
159 | */
160 | setLineWidth(lineWidth: number): void;
161 | /**
162 | * 设置虚线
163 | */
164 | setLineDash(patten: number[], offset: number);
165 | /**
166 | * 设置最大倾斜
167 | */
168 | setMiterLimit(miterLimit: number): void;
169 | /**
170 | * 添加一个矩形路径到当前路径。
171 | */
172 | rect(x: number, y: number, width: number, height: number): void;
173 | /**
174 | * 填充一个矩形。用 setFillStyle() 设置矩形的填充色,如果没设置默认是黑色。
175 | */
176 | fillRect(x: number, y: number, width: number, height: number): void;
177 | /**
178 | * 一个矩形(非填充)。用 setFillStroke() 设置矩形线条的颜色,如果没设置默认是黑色。
179 | */
180 | strokeRect(x: number, y: number, width: number, height: number): void;
181 | /**
182 | * 在给定的矩形区域内,清除画布上的像素
183 | */
184 | clearRect(x: number, y: number, width: number, height: number): void;
185 | /**
186 | * 对当前路径进行填充
187 | */
188 | fill(): void;
189 | /**
190 | * 对当前路径进行描边
191 | */
192 | stroke(): void;
193 | /**
194 | * 开始一个路径
195 | */
196 | beginPath(): void;
197 | /**
198 | * 关闭一个路径
199 | */
200 | closePath(): void;
201 | /**
202 | * 把路径移动到画布中的指定点,但不创建线条。
203 | */
204 | moveTo(x: number, y: number): void;
205 | /**
206 | * 添加一个新点,然后在画布中创建从该点到最后指定点的线条。
207 | */
208 | lineTo(x: number, y: number): void;
209 | /**
210 | * 添加一个弧形路径到当前路径,顺时针绘制。
211 | */
212 | arc(x: number, y: number, radius: number, startAngle: number, sweepAngle: number): void;
213 | /**
214 | * 创建二次方贝塞尔曲线
215 | */
216 | quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
217 | /**
218 | * 创建三次方贝塞尔曲线
219 | */
220 | bezierCurveTo(cpx1: number, cpy1: number, cpx2: number, cpy2: number, x: number, y: number): void;
221 | /**
222 | * 对横纵坐标进行缩放
223 | */
224 | scale(scaleWidth: number/**横坐标缩放的倍数1 = 100%,0.5 = 50%,2 = 200%,依次类 */, scaleHeight: number/** 纵坐标轴缩放的倍数1 = 100%,0.5 = 50%,2 = 200%,依次类 */): void;
225 | /**
226 | * 对坐标轴进行顺时针旋转
227 | */
228 | rotate(deg: number/**degrees * Math.PI/180;degrees范围为0~360;旋转角度,以弧度计 */): void;
229 | /**
230 | * 对坐标原点进行缩放
231 | */
232 | translate(x: number/**水平坐标平移量 */, y: number/**竖直坐标平移量 */): void;
233 | /**
234 | * 设置字体字号
235 | */
236 | setFontSize(size: number): void;
237 | /**
238 | * 在画布上绘制被填充的文本
239 | */
240 | fillText(text: string, x: number, y: number): void;
241 | /**
242 | * 设置文字的对齐
243 | */
244 | setTextAlign(align: "left" | "center" | "right"): void;
245 | /**
246 | * 设置文字水平对齐
247 | */
248 | setTextBaseline(baseline: "top" | "bottom" | "middle" | "normal"): void;
249 | /**
250 | * 设置字体大小
251 | */
252 | setFontSize(fontSize: number): void;
253 | /**
254 | * 在画布上绘制图像
255 | */
256 | drawImage(imageResource: string, x: number, y: number, width: number, height: number): void;
257 | /**
258 | * 设置全局画笔透明度。
259 | */
260 | setGlobalAlpha(alpha: number): void;
261 | /**
262 | * 保存当前坐标轴的缩放、旋转、平移信息
263 | */
264 | save(): void;
265 | /**
266 | * 恢复之前保存过的坐标轴的缩放、旋转、平移信息
267 | */
268 | restore(): void;
269 | /**
270 | * 进行绘图
271 | */
272 | draw(reserve?: boolean): void;
273 | }
274 |
275 | interface WxAudioContext {
276 | /**
277 | * 播放
278 | */
279 | play: () => void;
280 | /**
281 | * 暂停
282 | */
283 | pause: () => void;
284 | /**
285 | * 跳转到指定位置,单位 s
286 | */
287 | seek: (position: number) => void;
288 | }
289 |
290 | interface WxVideoContext {
291 | /**
292 | * 播放
293 | */
294 | play: () => void;
295 | /**
296 | * 暂停
297 | */
298 | pause: () => void;
299 | /**
300 | * 跳转到指定位置,单位 s
301 | */
302 | seek: (position: number) => void;
303 | /**
304 | * 发送弹幕,danmu 包含两个属性 text, color。
305 | */
306 | sendDanmu: (danmu: { text: string; color: string; }) => void;
307 | }
308 |
309 | interface WxMapContext {
310 | /**
311 | * 获取当前地图中心的经纬度,返回的是 gcj02 坐标系,可以用于 wx.openLocation
312 | */
313 | getCenterLocation: (obj: {
314 | /**
315 | * 接口调用成功的回调函数 ,res = { longitude: "经度", latitude: "纬度"}
316 | */
317 | success?: (res: { longitude: string; latitude: string }) => void;
318 | /**
319 | * 接口调用失败的回调函数
320 | */
321 | fail?: () => void;
322 | /**
323 | * 接口调用结束的回调函数(调用成功、失败都会执行)
324 | */
325 | complete?: () => void;
326 | }) => void;
327 | /**
328 | * 将地图中心移动到当前定位点,需要配合map组件的show-location使用
329 | */
330 | moveToLocation: () => void;
331 | }
332 |
333 | interface WxBaseEvent {
334 | /**
335 | * 事件类型
336 | */
337 | type: string;
338 | /**
339 | * 事件生成时的时间戳
340 | */
341 | timeStamp: number;
342 | /**
343 | * 触发事件的组件的一些属性值集合
344 | */
345 | target: {
346 | /**
347 | * 事件源组件的id
348 | */
349 | id: string;
350 | /**
351 | * 当前组件的类型
352 | */
353 | tagName: string;
354 | /**
355 | * 事件源组件上由data-开头的自定义属性组成的集合
356 | */
357 | dataset: {
358 | [key: string]: any;
359 | };
360 | offsetTop: number;
361 | offsetLeft: number;
362 | };
363 | /**
364 | * 当前组件的一些属性值集合
365 | */
366 | currentTarget: {
367 | /**
368 | * 事件源组件的id
369 | */
370 | id: string;
371 | /**
372 | * 当前组件的类型
373 | */
374 | tagName: string;
375 | /**
376 | * 事件源组件上由data-开头的自定义属性组成的集合
377 | */
378 | dataset: {
379 | [key: string]: any;
380 | };
381 | offsetTop: number;
382 | offsetLeft: number;
383 | };
384 | }
385 |
386 | interface WxCanvasTouch {
387 | /**
388 | * 触摸点的标识符
389 | */
390 | identifier: number;
391 | /**
392 | * 距离 Canvas 左上角的距离,Canvas 的左上角为原点 ,横向为X轴,纵向为Y轴
393 | */
394 | x: number;
395 | y: number;
396 | }
397 |
398 | interface WxTouch {
399 | /**
400 | * 触摸点的标识符
401 | */
402 | identifier: number;
403 | /**
404 | * 距离文档左上角的距离,文档的左上角为原点 ,横向为X轴,纵向为Y轴
405 | */
406 | pageX: number;
407 | pageY: number;
408 | /**
409 | * 距离页面可显示区域(屏幕除去导航条)左上角距离,横向为X轴,纵向为Y轴
410 | */
411 | clientX: number;
412 | clientY: number;
413 | }
414 |
415 | interface WxTouchEvent extends WxBaseEvent {
416 | touches: Array;
417 | changedTouches: Array;
418 | }
419 |
420 | interface SystemInfo {
421 |
422 | /**
423 | * 手机品牌
424 | */
425 | brand: string;
426 | /**
427 | * 手机型号
428 | */
429 | model: string;
430 | /**
431 | * 设备像素比
432 | */
433 | pixelRatio: number;
434 | /**
435 | * 屏幕宽度
436 | */
437 | screenWidth: number;
438 | /**
439 | * 屏幕高度
440 | */
441 | screenHeight: number;
442 | /**
443 | * 可使用窗口宽度
444 | */
445 | windowWidth: number;
446 | /**
447 | * 可使用窗口高度
448 | */
449 | windowHeight: number;
450 | /**
451 | * 微信设置的语言
452 | */
453 | language: string;
454 | /**
455 | * 微信版本号
456 | */
457 | version: string;
458 | /**
459 | * 操作系统版本
460 | */
461 | system: string;
462 | /**
463 | * 客户端平台
464 | */
465 | platform: string;
466 | /**
467 | * 用户字体大小设置。以“我-设置-通用-字体大小”中的设置为准,单位:px
468 | */
469 | fontSizeSetting: number;
470 | /**
471 | * 客户端基础库版本
472 | */
473 | SDKVersion: string;
474 |
475 | }
476 |
477 | // # 网络 #
478 |
479 | /**
480 | * 发起网络请求。使用前请先阅读说明。
481 | */
482 | export function request(obj: {
483 | /**
484 | *
485 | */
486 | url: string;
487 | /**
488 | *
489 | */
490 | data?: any;
491 | /**
492 | *
493 | */
494 | header?: any;
495 | /**
496 | * GET
497 | */
498 | method?: string;
499 | /**
500 | * json
501 | */
502 | dataType?: string;
503 | }): Promise;
504 |
505 | /**
506 | * 将本地资源上传到开发者服务器,客户端发起一个 HTTPS POST 请求,其中 content-type 为 multipart/form-data 。使用前请先阅读说明。
507 | */
508 | export function uploadFile(obj: {
509 | /**
510 | * 开发者服务器 url
511 | */
512 | url: string;
513 | /**
514 | * 要上传文件资源的路径
515 | */
516 | filePath: string;
517 | /**
518 | * 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
519 | */
520 | name: string;
521 | /**
522 | * HTTP 请求 Header, header 中不能设置 Referer
523 | */
524 | header?: any;
525 | /**
526 | * HTTP 请求中其他额外的 form data
527 | */
528 | formData?: any;
529 | }): Promise;
530 |
531 | /**
532 | * 下载文件资源到本地,客户端直接发起一个 HTTP GET 请求,返回文件的本地临时路径。使用前请先阅读说明。
533 | */
534 | export function downloadFile(obj: {
535 | /**
536 | * 下载资源的 url
537 | */
538 | url: string;
539 | /**
540 | * HTTP 请求 Header,header 中不能设置 Referer
541 | */
542 | header?: any;
543 | }): Promise;
544 |
545 | /**
546 | * 创建一个 WebSocket 连接。使用前请先阅读说明。
547 | */
548 | export function connectSocket(obj: {
549 | /**
550 | * 开发者服务器接口地址,必须是 wss 协议,且域名必须是后台配置的合法域名
551 | */
552 | url: string;
553 | /**
554 | * HTTP Header , header 中不能设置 Referer
555 | */
556 | header?: any;
557 | /**
558 | * 默认是GET,有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
559 | */
560 | method?: string;
561 | /**
562 | * 子协议数组
563 | */
564 | protocols?: string[];
565 | }): Promise;
566 |
567 | /**
568 | * 监听WebSocket连接打开事件。
569 | */
570 | export function onSocketOpen(callback: Function): void;
571 |
572 | /**
573 | * 监听WebSocket错误。
574 | */
575 | export function onSocketError(callback: Function): void;
576 |
577 | /**
578 | * 通过 WebSocket 连接发送数据,需要先 wx.connectSocket,并在 wx.onSocketOpen 回调之后才能发送。
579 | */
580 | export function sendSocketMessage(obj: {
581 | /**
582 | * 需要发送的内容
583 | */
584 | data: undefined;
585 | }): Promise;
586 |
587 | /**
588 | * 监听WebSocket接受到服务器的消息事件。
589 | */
590 | export function onSocketMessage(callback: Function): void;
591 |
592 | /**
593 | * 关闭WebSocket连接。
594 | */
595 | export function closeSocket(obj: {
596 | /**
597 | * 一个数字值表示关闭连接的状态号,表示连接被关闭的原因。如果这个参数没有被指定,默认的取值是1000 (表示正常连接关闭)
598 | */
599 | code?: number;
600 | /**
601 | * 一个可读的字符串,表示连接被关闭的原因。这个字符串必须是不长于123字节的UTF-8 文本(不是字符)
602 | */
603 | reason?: string;
604 | /**
605 | * 接口调用成功的回调函数
606 | */
607 | success?: Function;
608 | /**
609 | * 接口调用失败的回调函数
610 | */
611 | fail?: Function;
612 | /**
613 | * 接口调用结束的回调函数(调用成功、失败都会执行)
614 | */
615 | complete?: Function;
616 | }): void;
617 |
618 | /**
619 | * 监听WebSocket关闭。
620 | */
621 | export function onSocketClose(callback: Function): void;
622 |
623 | // # 媒体 #
624 |
625 | /**
626 | * 从本地相册选择图片或使用相机拍照。
627 | */
628 | export function chooseImage(obj: {
629 | /**
630 | * 最多可以选择的图片张数,默认9
631 | */
632 | count?: number;
633 | /**
634 | * original 原图,compressed 压缩图,默认二者都有
635 | */
636 | sizeType?: string[];
637 | /**
638 | * album 从相册选图,camera 使用相机,默认二者都有
639 | */
640 | sourceType?: string[];
641 | }): Promise;
642 |
643 | /**
644 | * 预览图片。
645 | */
646 | export function previewImage(obj: {
647 | /**
648 | * 当前显示图片的链接,不填则默认为 urls 的第一张
649 | */
650 | current?: string;
651 | /**
652 | * 需要预览的图片链接列表
653 | */
654 | urls: string[];
655 | }): Promise;
656 |
657 | /**
658 | * 获取图片信息
659 | */
660 | export function getImageInfo(obj: {
661 | /**
662 | * 图片的路径,可以是相对路径,临时文件路径,存储文件路径,网络图片路径
663 | */
664 | src: string;
665 | }): Promise;
666 |
667 | export function saveImageToPhotosAlbum(obj: {
668 | /**
669 | * 图片文件路径,可以是临时文件路径也可以是永久文件路径,不支持网络图片路径
670 | */
671 | filePath: string;
672 | }): Promise;
673 |
674 | /**
675 | * 开始录音。当主动调用wx.stopRecord,或者录音超过1分钟时自动结束录音,返回录音文件的临时文件路径。当用户离开小程序时,此接口无法调用。
676 | */
677 | export function startRecord(): Promise;
678 |
679 | /**
680 | * 主动调用停止录音。
681 | */
682 | export function stopRecord(): void;
683 |
684 | export function getRecorderManager(): Promise;
685 |
686 | /**
687 | * 开始播放语音,同时只允许一个语音文件正在播放,如果前一个语音文件还没播放完,将中断前一个语音播放。
688 | */
689 | export function playVoice(obj: {
690 | /**
691 | * 需要播放的语音文件的文件路径
692 | */
693 | filePath: string;
694 | /**
695 | * 指定录音时长,到达指定的录音时长后会自动停止录音,单位:秒,默认值:60
696 | */
697 | duration?: number;
698 | }): Promise;
699 |
700 | /**
701 | * 暂停正在播放的语音。再次调用wx.playVoice播放同一个文件时,会从暂停处开始播放。如果想从头开始播放,需要先调用 wx.stopVoice。
702 | */
703 | export function pauseVoice(): void;
704 |
705 | /**
706 | * 结束播放语音。
707 | */
708 | export function stopVoice(): void;
709 |
710 | /**
711 | * 获取后台音乐播放状态。
712 | */
713 | export function getBackgroundAudioPlayerState(): Promise;
714 |
715 | /**
716 | * 使用后台播放器播放音乐,对于微信客户端来说,只能同时有一个后台音乐在播放。当用户离开小程序后,音乐将暂停播放;当用户点击“显示在聊天顶部”时,音乐不会暂停播放;当用户在其他小程序占用了音乐播放器,原有小程序内的音乐将停止播放。
717 | */
718 | export function playBackgroundAudio(obj: {
719 | /**
720 | * 音乐链接,目前支持的格式有 m4a, aac, mp3, wav
721 | */
722 | dataUrl: string;
723 | /**
724 | * 音乐标题
725 | */
726 | title?: string;
727 | /**
728 | * 封面URL
729 | */
730 | coverImgUrl?: string;
731 | }): Promise;
732 |
733 | /**
734 | * 暂停播放音乐。
735 | */
736 | export function pauseBackgroundAudio(): void;
737 |
738 | /**
739 | * 控制音乐播放进度。
740 | */
741 | export function seekBackgroundAudio(obj: {
742 | /**
743 | * 音乐位置,单位:秒
744 | */
745 | position: number;
746 | }): Promise;
747 |
748 | /**
749 | * 停止播放音乐。
750 | */
751 | export function stopBackgroundAudio(): void;
752 |
753 | /**
754 | * 监听音乐播放。
755 | */
756 | export function onBackgroundAudioPlay(callback: Function): void;
757 |
758 | /**
759 | * 监听音乐暂停。
760 | */
761 | export function onBackgroundAudioPause(callback: Function): void;
762 |
763 | /**
764 | * 监听音乐停止。
765 | */
766 | export function onBackgroundAudioStop(callback: Function): void;
767 |
768 | export function getBackgroundAudioManager(): Promise;
769 |
770 | /**
771 | * 1.6.0 版本开始,建议使用能力更强的 wx.createInnerAudioContext 接口
772 | */
773 | export function createAudioContext(): WxAudioContext;
774 |
775 | /**
776 | * 拍摄视频或从手机相册中选视频,返回视频的临时文件路径。
777 | */
778 | export function chooseVideo(obj: {
779 | /**
780 | * album 从相册选视频,camera 使用相机拍摄,默认为:['album', 'camera']
781 | */
782 | sourceType?: string[];
783 | /**
784 | * 是否压缩所选的视频源文件,默认值为true,需要压缩
785 | */
786 | compressed?: undefined;
787 | /**
788 | * 拍摄视频最长拍摄时间,单位秒。最长支持 60 秒
789 | */
790 | maxDuration?: number;
791 | /**
792 | * 默认调起的为前置还是后置摄像头。front: 前置,back: 后置,默认 back
793 | */
794 | camera?: string;
795 | }): Promise;
796 |
797 | export function saveVideoToPhotosAlbum(obj: {
798 | /**
799 | * 视频文件路径,可以是临时文件路径也可以是永久文件路径
800 | */
801 | filePath: string;
802 | }): Promise;
803 |
804 | /**
805 | * 创建并返回 video 上下文 videoContext 对象
806 | */
807 | export function createVideoContext(): WxVideoContext;
808 |
809 | export function createCameraContext(): void;
810 |
811 | // # 文件 #
812 |
813 | /**
814 | * 保存文件到本地。注意:saveFile 会把临时文件移动,因此调用成功后传入的 tempFilePath 将不可用
815 | */
816 | export function saveFile(obj: {
817 | /**
818 | * 需要保存的文件的临时路径
819 | */
820 | tempFilePath: string;
821 | }): Promise;
822 |
823 | /**
824 | * 获取本地已保存的文件列表
825 | */
826 | export function getSavedFileList(): Promise;
827 |
828 | /**
829 | * 获取本地文件的文件信息。此接口只能用于获取已保存到本地的文件,若需要获取临时文件信息,请使用 wx.getFileInfo 接口。
830 | */
831 | export function getSavedFileInfo(obj: {
832 | /**
833 | * 文件路径
834 | */
835 | filePath: string;
836 | }): Promise;
837 |
838 | /**
839 | * 删除本地存储的文件
840 | */
841 | export function removeSavedFile(obj: {
842 | /**
843 | * 需要删除的文件路径
844 | */
845 | filePath: string;
846 | }): Promise;
847 |
848 | /**
849 | * 新开页面打开文档,支持格式:doc, xls, ppt, pdf, docx, xlsx, pptx
850 | */
851 | export function openDocument(obj: {
852 | /**
853 | * 文件路径,可通过 downFile 获得
854 | */
855 | filePath: string;
856 | /**
857 | * 文件类型,指定文件类型打开文件,有效值 doc, xls, ppt, pdf, docx, xlsx, pptx
858 | */
859 | fileType?: string;
860 | }): Promise;
861 |
862 | export function getFileInfo(obj: {
863 | /**
864 | * 本地文件路径
865 | */
866 | filePath: string;
867 | /**
868 | * 计算文件摘要的算法,默认值 md5,有效值:md5,sha1
869 | */
870 | digestAlgorithm?: string;
871 | }): Promise;
872 |
873 | // # 数据缓存 #
874 |
875 | /**
876 | * 将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个异步接口。
877 | */
878 | export function setStorage(obj: {
879 | /**
880 | * 本地缓存中的指定的 key
881 | */
882 | key: string;
883 | /**
884 | * 需要存储的内容
885 | */
886 | data: any;
887 | }): Promise;
888 |
889 | /**
890 | * 将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。
891 | */
892 | export function setStorageSync(key: string, data: any, ): void;
893 |
894 | /**
895 | * 从本地缓存中异步获取指定 key 对应的内容。
896 | */
897 | export function getStorage(obj: {
898 | /**
899 | * 本地缓存中的指定的 key
900 | */
901 | key: string;
902 | }): Promise;
903 |
904 | /**
905 | * 从本地缓存中同步获取指定 key 对应的内容。
906 | */
907 | export function getStorageSync(key: string): void;
908 |
909 | /**
910 | * 异步获取当前storage的相关信息
911 | */
912 | export function getStorageInfo(): Promise;
913 |
914 | /**
915 | * 同步获取当前storage的相关信息
916 | */
917 | export function getStorageInfoSync(): void;
918 |
919 | /**
920 | * 从本地缓存中异步移除指定 key 。
921 | */
922 | export function removeStorage(obj: {
923 | /**
924 | * 本地缓存中的指定的 key
925 | */
926 | key: string;
927 | }): Promise;
928 |
929 | /**
930 | * 从本地缓存中同步移除指定 key 。
931 | */
932 | export function removeStorageSync(key: string): void;
933 |
934 | /**
935 | * 清理本地数据缓存。
936 | */
937 | export function clearStorage(): void;
938 |
939 | /**
940 | * 同步清理本地数据缓存
941 | */
942 | export function clearStorageSync(): void;
943 |
944 | // # 位置 #
945 |
946 | /**
947 | * 获取当前的地理位置、速度。当用户离开小程序后,此接口无法调用;当用户点击“显示在聊天顶部”时,此接口可继续调用。
948 | */
949 | export function getLocation(obj: {
950 | /**
951 | * 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于wx.openLocation的坐标
952 | */
953 | type?: string;
954 | }): Promise;
955 |
956 | /**
957 | * 打开地图选择位置。
958 | */
959 | export function chooseLocation(): Promise;
960 |
961 | /**
962 | * 使用微信内置地图查看位置。
963 | */
964 | export function openLocation(obj: {
965 | /**
966 | * 纬度,范围为-90~90,负数表示南纬
967 | */
968 | latitude: number;
969 | /**
970 | * 经度,范围为-180~180,负数表示西经
971 | */
972 | longitude: number;
973 | /**
974 | * 缩放比例,范围5~18,默认为18
975 | */
976 | scale?: number;
977 | /**
978 | * 位置名
979 | */
980 | name?: string;
981 | /**
982 | * 地址的详细说明
983 | */
984 | address?: string;
985 | }): Promise;
986 |
987 | /**
988 | * 创建并返回 map 上下文 mapContext 对象
989 | */
990 | export function createMapContext(): void;
991 |
992 | // # 设备 #
993 |
994 | /**
995 | * 获取系统信息。
996 | */
997 | export function getSystemInfo(): Promise;
998 |
999 | /**
1000 | * 获取系统信息同步接口
1001 | */
1002 | export function getSystemInfoSync(): SystemInfo;
1003 |
1004 | /**
1005 | * 获取网络类型。
1006 | */
1007 | export function getNetworkType(): Promise;
1008 |
1009 | export function onNetworkStatusChange(callback: Function): void;
1010 |
1011 | export function setScreenBrightness(obj: {
1012 | /**
1013 | * 屏幕亮度值,范围 0~1,0 最暗,1 最亮
1014 | */
1015 | value: number;
1016 | }): Promise;
1017 |
1018 | export function getScreenBrightness(): Promise;
1019 |
1020 | export function vibrateLong(): Promise;
1021 |
1022 | export function vibrateShort(): Promise;
1023 |
1024 | /**
1025 | * 监听加速度数据,频率:5次/秒,接口调用后会自动开始监听,可使用 wx.stopAccelerometer 停止监听。
1026 | */
1027 | export function onAccelerometerChange(callback: Function): void;
1028 |
1029 | export function startAccelerometer(): Promise;
1030 |
1031 | export function stopAccelerometer(): void;
1032 |
1033 | /**
1034 | * 监听罗盘数据,频率:5次/秒,接口调用后会自动开始监听,可使用wx.stopCompass停止监听。
1035 | */
1036 | export function onCompassChange(callback: Function): void;
1037 |
1038 | export function startCompass(): Promise;
1039 |
1040 | export function stopCompass(): void;
1041 |
1042 | export function makePhoneCall(obj: {
1043 | /**
1044 | * 需要拨打的电话号码
1045 | */
1046 | phoneNumber: string;
1047 | }): Promise;
1048 |
1049 | /**
1050 | * 调起客户端扫码界面,扫码成功后返回对应的结果
1051 | */
1052 | export function scanCode(obj: {
1053 | /**
1054 | * 是否只能从相机扫码,不允许从相册选择图片
1055 | */
1056 | onlyFromCamera?: boolean;
1057 | }): Promise;
1058 |
1059 | export function setClipboardData(obj: {
1060 | /**
1061 | * 需要设置的内容
1062 | */
1063 | data: string;
1064 | }): Promise;
1065 |
1066 | export function getClipboardData(): Promise;
1067 |
1068 | export function openBluetoothAdapter(): Promise;
1069 |
1070 | export function closeBluetoothAdapter(): void;
1071 |
1072 | export function getBluetoothAdapterState(): Promise;
1073 |
1074 | export function onBluetoothAdapterStateChange(callback: Function): void;
1075 |
1076 | export function startBluetoothDevicesDiscovery(obj: {
1077 | /**
1078 | * 蓝牙设备主 service 的 uuid 列表
1079 | */
1080 | services?: Array;
1081 | /**
1082 | * 是否允许重复上报同一设备, 如果允许重复上报,则onDeviceFound 方法会多次上报同一设备,但是 RSSI 值会有不同
1083 | */
1084 | allowDuplicatesKey?: boolean;
1085 | /**
1086 | * 上报设备的间隔,默认为0,意思是找到新设备立即上报,否则根据传入的间隔上报
1087 | */
1088 | interval?: number;
1089 | }): Promise;
1090 |
1091 | export function stopBluetoothDevicesDiscovery(): void;
1092 |
1093 | export function getBluetoothDevices(): Promise;
1094 |
1095 | export function onBluetoothDeviceFound(callback: Function): void;
1096 |
1097 | export function getConnectedBluetoothDevices(obj: {
1098 | /**
1099 | * 蓝牙设备主 service 的 uuid 列表
1100 | */
1101 | services: Array;
1102 | }): Promise;
1103 |
1104 | export function createBLEConnection(obj: {
1105 | /**
1106 | * 蓝牙设备 id,参考 getDevices 接口
1107 | */
1108 | deviceId: string;
1109 | /**
1110 | * 成功则返回本机蓝牙适配器状态
1111 | */
1112 | success: Function;
1113 | /**
1114 | * 接口调用失败的回调函数
1115 | */
1116 | fail?: Function;
1117 | /**
1118 | * 接口调用结束的回调函数(调用成功、失败都会执行)
1119 | */
1120 | complete?: Function;
1121 | }): void;
1122 |
1123 | export function closeBLEConnection(obj: {
1124 | /**
1125 | * 蓝牙设备 id,参考 getDevices 接口
1126 | */
1127 | deviceId: string;
1128 | /**
1129 | * 成功则返回本机蓝牙适配器状态
1130 | */
1131 | success: Function;
1132 | /**
1133 | * 接口调用失败的回调函数
1134 | */
1135 | fail?: Function;
1136 | /**
1137 | * 接口调用结束的回调函数(调用成功、失败都会执行)
1138 | */
1139 | complete?: Function;
1140 | }): void;
1141 |
1142 | export function onBLEConnectionStateChange(callback: Function): void;
1143 |
1144 | export function getBLEDeviceServices(obj: {
1145 | /**
1146 | * 蓝牙设备 id,参考 getDevices 接口
1147 | */
1148 | deviceId: string;
1149 | }): Promise;
1150 |
1151 | export function getBLEDeviceCharacteristics(obj: {
1152 | /**
1153 | * 蓝牙设备 id,参考 device 对象
1154 | */
1155 | deviceId: string;
1156 | /**
1157 | * 蓝牙服务 uuid
1158 | */
1159 | serviceId: string;
1160 | }): Promise;
1161 |
1162 | export function readBLECharacteristicValue(obj: {
1163 | /**
1164 | * 蓝牙设备 id,参考 device 对象
1165 | */
1166 | deviceId: string;
1167 | /**
1168 | * 蓝牙特征值对应服务的 uuid
1169 | */
1170 | serviceId: string;
1171 | /**
1172 | * 蓝牙特征值的 uuid
1173 | */
1174 | characteristicId: string;
1175 | }): Promise;
1176 |
1177 | export function writeBLECharacteristicValue(obj: {
1178 | /**
1179 | * 蓝牙设备 id,参考 device 对象
1180 | */
1181 | deviceId: string;
1182 | /**
1183 | * 蓝牙特征值对应服务的 uuid
1184 | */
1185 | serviceId: string;
1186 | /**
1187 | * 蓝牙特征值的 uuid
1188 | */
1189 | characteristicId: string;
1190 | /**
1191 | * 蓝牙设备特征值对应的二进制值
1192 | */
1193 | value: undefined;
1194 | }): Promise;
1195 |
1196 | export function notifyBLECharacteristicValueChange(obj: {
1197 | /**
1198 | * 蓝牙设备 id,参考 device 对象
1199 | */
1200 | deviceId: string;
1201 | /**
1202 | * 蓝牙特征值对应服务的 uuid
1203 | */
1204 | serviceId: string;
1205 | /**
1206 | * 蓝牙特征值的 uuid
1207 | */
1208 | characteristicId: string;
1209 | /**
1210 | * true: 启用 notify; false: 停用 notify
1211 | */
1212 | state: boolean;
1213 | }): Promise;
1214 |
1215 | export function onBLECharacteristicValueChange(callback: Function): void;
1216 |
1217 | export function startBeaconDiscovery(obj: {
1218 | /**
1219 | * iBeacon设备广播的 uuids
1220 | */
1221 | uuids: string[];
1222 | }): Promise;
1223 |
1224 | export function stopBeaconDiscovery(): void;
1225 |
1226 | export function getBeacons(): Promise;
1227 |
1228 | export function onBeaconUpdate(callback: Function): void;
1229 |
1230 | export function onBeaconServiceChange(callback: Function): void;
1231 |
1232 | export function onUserCaptureScreen(callback: Function): void;
1233 |
1234 | export function addPhoneContact(obj: {
1235 | /**
1236 | * 头像本地文件路径
1237 | */
1238 | photoFilePath?: string;
1239 | /**
1240 | * 昵称
1241 | */
1242 | nickName?: string;
1243 | /**
1244 | * 姓氏
1245 | */
1246 | lastName?: string;
1247 | /**
1248 | * 中间名
1249 | */
1250 | middleName?: string;
1251 | /**
1252 | * 名字
1253 | */
1254 | firstName: string;
1255 | /**
1256 | * 备注
1257 | */
1258 | remark?: string;
1259 | /**
1260 | * 手机号
1261 | */
1262 | mobilePhoneNumber?: string;
1263 | /**
1264 | * 微信号
1265 | */
1266 | weChatNumber?: string;
1267 | /**
1268 | * 联系地址国家
1269 | */
1270 | addressCountry?: string;
1271 | /**
1272 | * 联系地址省份
1273 | */
1274 | addressState?: string;
1275 | /**
1276 | * 联系地址城市
1277 | */
1278 | addressCity?: string;
1279 | /**
1280 | * 联系地址街道
1281 | */
1282 | addressStreet?: string;
1283 | /**
1284 | * 联系地址邮政编码
1285 | */
1286 | addressPostalCode?: string;
1287 | /**
1288 | * 公司
1289 | */
1290 | organization?: string;
1291 | /**
1292 | * 职位
1293 | */
1294 | title?: string;
1295 | /**
1296 | * 工作传真
1297 | */
1298 | workFaxNumber?: string;
1299 | /**
1300 | * 工作电话
1301 | */
1302 | workPhoneNumber?: string;
1303 | /**
1304 | * 公司电话
1305 | */
1306 | hostNumber?: string;
1307 | /**
1308 | * 电子邮件
1309 | */
1310 | email?: string;
1311 | /**
1312 | * 网站
1313 | */
1314 | url?: string;
1315 | /**
1316 | * 工作地址国家
1317 | */
1318 | workAddressCountry?: string;
1319 | /**
1320 | * 工作地址省份
1321 | */
1322 | workAddressState?: string;
1323 | /**
1324 | * 工作地址城市
1325 | */
1326 | workAddressCity?: string;
1327 | /**
1328 | * 工作地址街道
1329 | */
1330 | workAddressStreet?: string;
1331 | /**
1332 | * 工作地址邮政编码
1333 | */
1334 | workAddressPostalCode?: string;
1335 | /**
1336 | * 住宅传真
1337 | */
1338 | homeFaxNumber?: string;
1339 | /**
1340 | * 住宅电话
1341 | */
1342 | homePhoneNumber?: string;
1343 | /**
1344 | * 住宅地址国家
1345 | */
1346 | homeAddressCountry?: string;
1347 | /**
1348 | * 住宅地址省份
1349 | */
1350 | homeAddressState?: string;
1351 | /**
1352 | * 住宅地址城市
1353 | */
1354 | homeAddressCity?: string;
1355 | /**
1356 | * 住宅地址街道
1357 | */
1358 | homeAddressStreet?: string;
1359 | /**
1360 | * 住宅地址邮政编码
1361 | */
1362 | homeAddressPostalCode?: string;
1363 | }): Promise;
1364 |
1365 | // # 界面 #
1366 |
1367 | /**
1368 | * 显示消息提示框
1369 | */
1370 | export function showToast(obj: {
1371 | /**
1372 | * 提示的内容
1373 | */
1374 | title: string;
1375 | /**
1376 | * 图标,有效值 "success", "loading"
1377 | */
1378 | icon?: string;
1379 | /**
1380 | * 自定义图标的本地路径,image 的优先级高于 icon
1381 | */
1382 | image?: string;
1383 | /**
1384 | * 提示的延迟时间,单位毫秒,默认:1500
1385 | */
1386 | duration?: number;
1387 | /**
1388 | * 是否显示透明蒙层,防止触摸穿透,默认:false
1389 | */
1390 | mask?: boolean;
1391 | }): Promise;
1392 |
1393 | export function showLoading(obj: {
1394 | /**
1395 | * 提示的内容
1396 | */
1397 | title: string;
1398 | /**
1399 | * 是否显示透明蒙层,防止触摸穿透,默认:false
1400 | */
1401 | mask?: boolean;
1402 | }): Promise;
1403 |
1404 | /**
1405 | * 隐藏消息提示框
1406 | */
1407 | export function hideToast(): void;
1408 |
1409 | export function hideLoading(): Promise;
1410 |
1411 | /**
1412 | * 显示模态弹窗
1413 | */
1414 | export function showModal(obj: {
1415 | /**
1416 | * 提示的标题
1417 | */
1418 | title: string;
1419 | /**
1420 | * 提示的内容
1421 | */
1422 | content: string;
1423 | /**
1424 | * 是否显示取消按钮,默认为 true
1425 | */
1426 | showCancel?: boolean;
1427 | /**
1428 | * 取消按钮的文字,默认为"取消",最多 4 个字符
1429 | */
1430 | cancelText?: string;
1431 | /**
1432 | * 取消按钮的文字颜色,默认为"#000000"
1433 | */
1434 | cancelColor?: undefined;
1435 | /**
1436 | * 确定按钮的文字,默认为"确定",最多 4 个字符
1437 | */
1438 | confirmText?: string;
1439 | /**
1440 | * 确定按钮的文字颜色,默认为"#3CC51F"
1441 | */
1442 | confirmColor?: undefined;
1443 | }): Promise;
1444 |
1445 | /**
1446 | * 显示操作菜单
1447 | */
1448 | export function showActionSheet(obj: {
1449 | /**
1450 | * 按钮的文字数组,数组长度最大为6个
1451 | */
1452 | itemList: undefined;
1453 | /**
1454 | * 按钮的文字颜色,默认为"#000000"
1455 | */
1456 | itemColor?: undefined;
1457 | }): Promise;
1458 |
1459 | export function setTopBarText(obj: {
1460 | /**
1461 | * 置顶栏文字内容
1462 | */
1463 | text: string;
1464 | }): Promise;
1465 |
1466 | /**
1467 | * 动态设置当前页面的标题。
1468 | */
1469 | export function setNavigationBarTitle(obj: {
1470 | /**
1471 | * 页面标题
1472 | */
1473 | title: string;
1474 | }): Promise;
1475 |
1476 | /**
1477 | * 在当前页面显示导航条加载动画。
1478 | */
1479 | export function showNavigationBarLoading(): void;
1480 |
1481 | /**
1482 | * 隐藏导航条加载动画。
1483 | */
1484 | export function hideNavigationBarLoading(): void;
1485 |
1486 | /**
1487 | * 保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面。
1488 | */
1489 | export function navigateTo(obj: {
1490 | /**
1491 | * 需要跳转的应用内非 tabBar 的页面的路径 , 路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2'
1492 | */
1493 | url: string;
1494 | }): Promise;
1495 |
1496 | /**
1497 | * 关闭当前页面,跳转到应用内的某个页面。
1498 | */
1499 | export function redirectTo(obj: {
1500 | /**
1501 | * 需要跳转的应用内非 tabBar 的页面的路径,路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2'
1502 | */
1503 | url: string;
1504 | }): Promise;
1505 |
1506 | export function reLaunch(obj: {
1507 | /**
1508 | * 需要跳转的应用内页面路径 , 路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2',如果跳转的页面路径是 tabBar 页面则不能带参数
1509 | */
1510 | url: string;
1511 | }): Promise;
1512 |
1513 | /**
1514 | * 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
1515 | */
1516 | export function switchTab(obj: {
1517 | /**
1518 | * 需要跳转的 tabBar 页面的路径(需在 app.json 的 tabBar 字段定义的页面),路径后不能带参数
1519 | */
1520 | url: string;
1521 | }): Promise;
1522 |
1523 | /**
1524 | * 关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages()) 获取当前的页面栈,决定需要返回几层。
1525 | */
1526 | export function navigateBack(obj: {
1527 | /**
1528 | * 返回的页面数,如果 delta 大于现有页面数,则返回到首页。
1529 | */
1530 | delta?: number;
1531 | }): Promise;
1532 |
1533 | /**
1534 | * 创建一个动画实例animation。调用实例的方法来描述动画。最后通过动画实例的export方法导出动画数据传递给组件的animation属性。
1535 | */
1536 | export function createAnimation(obj: {
1537 | /**
1538 | * 400
1539 | */
1540 | duration?: number;
1541 | /**
1542 | * "linear"
1543 | */
1544 | timingFunction?: string;
1545 | /**
1546 | * 0
1547 | */
1548 | delay?: number;
1549 | /**
1550 | * "50% 50% 0"
1551 | */
1552 | transformOrigin?: string;
1553 | }): WxAnimation;
1554 |
1555 | export function pageScrollTo(obj: {
1556 | /**
1557 | * 滚动到页面的目标位置(单位px)
1558 | */
1559 | scrollTop: number;
1560 | }): Promise;
1561 |
1562 | /**
1563 | * 创建 canvas 绘图上下文(指定 canvasId).Tip: 需要指定 canvasId,该绘图上下文只作用于对应的
1564 | */
1565 | export function createCanvasContext(canvasId: string): WxCanvasContext;
1566 |
1567 | /**
1568 | * 把当前画布的内容导出生成图片,并返回文件路径
1569 | */
1570 | export function canvasToTempFilePath(obj: {
1571 | /**
1572 | * 画布x轴起点(默认0) 1.2.0
1573 | */
1574 | x?: number;
1575 | /**
1576 | * 画布y轴起点(默认0) 1.2.0
1577 | */
1578 | y?: number;
1579 | /**
1580 | * 画布宽度(默认为canvas宽度-x) 1.2.0
1581 | */
1582 | width?: number;
1583 | /**
1584 | * 画布高度(默认为canvas高度-y) 1.2.0
1585 | */
1586 | height?: number;
1587 | /**
1588 | * 输出图片宽度(默认为width) 1.2.0
1589 | */
1590 | destWidth?: number;
1591 | /**
1592 | * 输出图片高度(默认为height) 1.2.0
1593 | */
1594 | destHeight?: number;
1595 | /**
1596 | * 画布标识,传入 的 cavas-id
1597 | */
1598 | canvasId: string;
1599 | /**
1600 | * 目标文件的类型,只支持 'jpg' 或 'png'。默认为 'png' 1.7.0
1601 | */
1602 | fileType?: string;
1603 | /**
1604 | * 图片的质量,取值范围为 (0, 1],不在范围内时当作1.0处理 1.7.0
1605 | */
1606 | quality?: number;
1607 | }): Promise;
1608 |
1609 | export function startPullDownRefresh(): Promise;
1610 |
1611 | /**
1612 | * 停止当前页面下拉刷新。
1613 | */
1614 | export function stopPullDownRefresh(): void;
1615 |
1616 | // # WXML节点信息 #
1617 |
1618 | // # 第三方平台 #
1619 |
1620 | export function getExtConfig(): Promise;
1621 |
1622 | export function getExtConfigSync(): void;
1623 |
1624 | // # 开放接口 #
1625 |
1626 | /**
1627 | * 调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key)等。用户数据的加解密通讯需要依赖会话密钥完成。
1628 | */
1629 | export function login(): Promise;
1630 |
1631 | /**
1632 | * 通过上述接口获得的用户登录态拥有一定的时效性。用户越久未使用小程序,用户登录态越有可能失效。反之如果用户一直在使用小程序,则用户登录态一直保持有效。具体时效逻辑由微信维护,对开发者透明。开发者只需要调用wx.checkSession接口检测当前用户登录态是否有效。登录态过期后开发者可以再调用wx.login获取新的用户登录态。
1633 | */
1634 | export function checkSession(): Promise;
1635 |
1636 | /**
1637 | * 获取用户信息,withCredentials 为 true 时需要先调用 wx.login 接口。
1638 | */
1639 | export function getUserInfo(obj: {
1640 | /**
1641 | * 是否带上登录态信息
1642 | */
1643 | withCredentials?: boolean;
1644 | /**
1645 | * 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。默认为en。
1646 | */
1647 | lang?: string;
1648 | }): Promise;
1649 |
1650 | /**
1651 | * 发起微信支付。
1652 | */
1653 | export function requestPayment(obj: {
1654 | /**
1655 | * 时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间
1656 | */
1657 | timeStamp: string;
1658 | /**
1659 | * 随机字符串,长度为32个字符以下。
1660 | */
1661 | nonceStr: string;
1662 | /**
1663 | * 统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=*
1664 | */
1665 | package: string;
1666 | /**
1667 | * 签名算法,暂支持 MD5
1668 | */
1669 | signType: string;
1670 | /**
1671 | * 签名,具体签名方案参见小程序支付接口文档;
1672 | */
1673 | paySign: string;
1674 | }): Promise;
1675 |
1676 | export function chooseAddress(): Promise;
1677 |
1678 | export function addCard(obj: {
1679 | /**
1680 | * 需要添加的卡券列表,列表内对象说明请参见请求对象说明
1681 | */
1682 | cardList: undefined;
1683 | }): Promise;
1684 |
1685 | export function openCard(obj: {
1686 | /**
1687 | * 需要打开的卡券列表,列表内参数详见openCard 请求对象说明
1688 | */
1689 | cardList: undefined;
1690 | }): Promise;
1691 |
1692 | export function openSetting(): Promise;
1693 |
1694 | export function getSetting(): Promise;
1695 |
1696 | export function getWeRunData(): Promise;
1697 |
1698 | export function navigateToMiniProgram(obj: {
1699 | /**
1700 | * 要打开的小程序 appId
1701 | */
1702 | appId: string;
1703 | /**
1704 | * 打开的页面路径,如果为空则打开首页
1705 | */
1706 | path?: string;
1707 | /**
1708 | * 需要传递给目标小程序的数据,目标小程序可在 App.onLaunch(),App.onShow() 中获取到这份数据。详情
1709 | */
1710 | extraData?: any;
1711 | /**
1712 | * 要打开的小程序版本,有效值 develop(开发版),trial(体验版),release(正式版) ,仅在当前小程序为开发版或体验版时此参数有效;如果当前小程序是体验版或正式版,则打开的小程序必定是正式版。默认值 release
1713 | */
1714 | envVersion?: string;
1715 | }): Promise;
1716 |
1717 | export function chooseInvoiceTitle(): Promise;
1718 |
1719 | export function checkIsSupportSoterAuthentication(): Promise;
1720 |
1721 | // # 数据 #
1722 |
1723 | /**
1724 | * 自定义分析数据上报接口。使用前,需要在小程序管理后台自定义分析中新建事件,配置好事件名与字段。
1725 | */
1726 | export function reportAnalytics(eventName: string, data: object): Promise;
1727 |
1728 | // # 拓展接口 #
1729 |
1730 | export function arrayBufferToBase64(): Promise;
1731 |
1732 | export function base64ToArrayBuffer(): Promise;
1733 |
1734 | // # 调试接口 #
1735 |
1736 | export function setEnableDebug(obj: {
1737 | /**
1738 | * 是否打开调试
1739 | */
1740 | }): Promise;
1741 |
1742 |
1743 | }
--------------------------------------------------------------------------------
/types/wxml.d.ts:
--------------------------------------------------------------------------------
1 |
2 | declare namespace WXML {
3 |
4 | interface WxBaseTag {
5 | wx_if?: Boolean;
6 | wx_elif?: Boolean;
7 | wx_else?: null;
8 | wx_for?: Array;
9 | wx_key?: string;
10 | wx_for_item?: string;
11 | wx_for_index?: string;
12 | }
13 |
14 | interface WxmlElement extends WxBaseTag {
15 | id?: string;
16 | class?: string;
17 | style?: string;
18 | [property: string]: any;
19 | }
20 |
21 |
22 | interface WxBaseEvent {
23 | /**
24 | * 事件类型
25 | */
26 | type: string;
27 | /**
28 | * 事件生成时的时间戳
29 | */
30 | timeStamp: number;
31 | /**
32 | * 触发事件的组件的一些属性值集合
33 | */
34 | target: {
35 | /**
36 | * 事件源组件的id
37 | */
38 | id: string;
39 | /**
40 | * 当前组件的类型
41 | */
42 | tagName: string;
43 | /**
44 | * 事件源组件上由data-开头的自定义属性组成的集合
45 | */
46 | dataset: {
47 | [key: string]: any;
48 | };
49 | offsetTop: number;
50 | offsetLeft: number;
51 | };
52 | /**
53 | * 当前组件的一些属性值集合
54 | */
55 | currentTarget: {
56 | /**
57 | * 事件源组件的id
58 | */
59 | id: string;
60 | /**
61 | * 当前组件的类型
62 | */
63 | tagName: string;
64 | /**
65 | * 事件源组件上由data-开头的自定义属性组成的集合
66 | */
67 | dataset: {
68 | [key: string]: any;
69 | };
70 | offsetTop: number;
71 | offsetLeft: number;
72 | };
73 | }
74 |
75 | interface WxCanvasTouch {
76 | /**
77 | * 触摸点的标识符
78 | */
79 | identifier: number;
80 | /**
81 | * 距离 Canvas 左上角的距离,Canvas 的左上角为原点 ,横向为X轴,纵向为Y轴
82 | */
83 | x: number;
84 | y: number;
85 | }
86 |
87 | interface WxTouch {
88 | /**
89 | * 触摸点的标识符
90 | */
91 | identifier: number;
92 | /**
93 | * 距离文档左上角的距离,文档的左上角为原点 ,横向为X轴,纵向为Y轴
94 | */
95 | pageX: number;
96 | pageY: number;
97 | /**
98 | * 距离页面可显示区域(屏幕除去导航条)左上角距离,横向为X轴,纵向为Y轴
99 | */
100 | clientX: number;
101 | clientY: number;
102 | }
103 |
104 | interface WxEvent extends WxBaseEvent {
105 | touches: Array;
106 | changedTouches: Array;
107 | detail: any;
108 | }
109 |
110 |
111 | interface EventHandle {
112 | (e: WxEvent): void;
113 | }
114 |
115 | /** 视图容器。 */
116 | interface View extends WxmlElement {
117 |
118 | /** 指定按下去的样式类。当 hover-class="none" 时,没有点击态效果; none */
119 | 'hover-class'?: string;
120 |
121 | /** 指定是否阻止本节点的祖先节点出现点击态; false */
122 | 'hover-stop-propagation'?: boolean;
123 |
124 | /** 按住后多久出现点击态,单位毫秒; 50 */
125 | 'hover-start-time'?: number;
126 |
127 | /** 手指松开后点击态保留时间,单位毫秒; 400 */
128 | 'hover-stay-time'?: number;
129 |
130 | }
131 |
132 | /** 可滚动视图区域。 */
133 | interface ScrollView extends WxmlElement {
134 |
135 | /** 允许横向滚动; false */
136 | 'scroll-x'?: boolean;
137 |
138 | /** 允许纵向滚动; false */
139 | 'scroll-y'?: boolean;
140 |
141 | /** 距顶部/左边多远时(单位px),触发 scrolltoupper 事件; 50 */
142 | 'upper-threshold'?: number;
143 |
144 | /** 距底部/右边多远时(单位px),触发 scrolltolower 事件; 50 */
145 | 'lower-threshold'?: number;
146 |
147 | /** 设置竖向滚动条位置; */
148 | 'scroll-top'?: number;
149 |
150 | /** 设置横向滚动条位置; */
151 | 'scroll-left'?: number;
152 |
153 | /** 值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素; */
154 | 'scroll-into-view'?: string;
155 |
156 | /** 在设置滚动条位置时使用动画过渡; false */
157 | 'scroll-with-animation'?: boolean;
158 |
159 | /** iOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只支持竖向; false */
160 | 'enable-back-to-top'?: boolean;
161 |
162 | /** 滚动到顶部/左边,会触发 scrolltoupper 事件; */
163 | bindscrolltoupper?: EventHandle;
164 |
165 | /** 滚动到底部/右边,会触发 scrolltolower 事件; */
166 | bindscrolltolower?: EventHandle;
167 |
168 | /** 滚动时触发,event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}; */
169 | bindscroll?: EventHandle;
170 |
171 | }
172 |
173 | /** 滑块视图容器。 */
174 | interface Swiper extends WxmlElement {
175 |
176 | /** 是否显示面板指示点; false */
177 | 'indicator-dots'?: boolean;
178 |
179 | /** 指示点颜色; rgba(0, 0, 0, .3) */
180 | 'indicator-color'?: string;
181 |
182 | /** 当前选中的指示点颜色; #000000 */
183 | 'indicator-active-color'?: string;
184 |
185 | /** 是否自动切换; false */
186 | autoplay?: boolean;
187 |
188 | /** 当前所在滑块的 index; 0 */
189 | current?: number;
190 |
191 | /** 当前所在滑块的 item-id ,不能与 current 被同时指定; "" */
192 | 'current-item-id'?: string;
193 |
194 | /** 自动切换时间间隔; 5000 */
195 | interval?: number;
196 |
197 | /** 滑动动画时长; 500 */
198 | duration?: number;
199 |
200 | /** 是否采用衔接滑动; false */
201 | circular?: boolean;
202 |
203 | /** 滑动方向是否为纵向; false */
204 | vertical?: boolean;
205 |
206 | /** 前边距,可用于露出前一项的一小部分,接受 px 和 rpx 值; "0px" */
207 | 'previous-margin'?: string;
208 |
209 | /** 后边距,可用于露出后一项的一小部分,接受 px 和 rpx 值; "0px" */
210 | 'next-margin'?: string;
211 |
212 | /** 同时显示的滑块数量; 1 */
213 | 'display-multiple-items'?: number;
214 |
215 | /** 是否跳过未显示的滑块布局,设为 true 可优化复杂情况下的滑动性能,但会丢失隐藏状态滑块的布局信息; false */
216 | 'skip-hidden-item-layout'?: boolean;
217 |
218 | /** current 改变时会触发 change 事件,event.detail = {current: current, source: source}; */
219 | bindchange?: EventHandle;
220 |
221 | /** 动画结束时会触发 animationfinish 事件,event.detail 同上; */
222 | bindanimationfinish?: EventHandle;
223 |
224 | }
225 |
226 | /** 仅可放置在组件中,宽高自动设置为100%。 */
227 | interface SwiperItem extends WxmlElement {
228 |
229 | /** 是否显示面板指示点; false */
230 | 'indicator-dots'?: boolean;
231 |
232 | /** 指示点颜色; rgba(0, 0, 0, .3) */
233 | 'indicator-color'?: string;
234 |
235 | /** 当前选中的指示点颜色; #000000 */
236 | 'indicator-active-color'?: string;
237 |
238 | /** 是否自动切换; false */
239 | autoplay?: boolean;
240 |
241 | /** 当前所在滑块的 index; 0 */
242 | current?: number;
243 |
244 | /** 当前所在滑块的 item-id ,不能与 current 被同时指定; "" */
245 | 'current-item-id'?: string;
246 |
247 | /** 自动切换时间间隔; 5000 */
248 | interval?: number;
249 |
250 | /** 滑动动画时长; 500 */
251 | duration?: number;
252 |
253 | /** 是否采用衔接滑动; false */
254 | circular?: boolean;
255 |
256 | /** 滑动方向是否为纵向; false */
257 | vertical?: boolean;
258 |
259 | /** 前边距,可用于露出前一项的一小部分,接受 px 和 rpx 值; "0px" */
260 | 'previous-margin'?: string;
261 |
262 | /** 后边距,可用于露出后一项的一小部分,接受 px 和 rpx 值; "0px" */
263 | 'next-margin'?: string;
264 |
265 | /** 同时显示的滑块数量; 1 */
266 | 'display-multiple-items'?: number;
267 |
268 | /** 是否跳过未显示的滑块布局,设为 true 可优化复杂情况下的滑动性能,但会丢失隐藏状态滑块的布局信息; false */
269 | 'skip-hidden-item-layout'?: boolean;
270 |
271 | /** current 改变时会触发 change 事件,event.detail = {current: current, source: source}; */
272 | bindchange?: EventHandle;
273 |
274 | /** 动画结束时会触发 animationfinish 事件,event.detail 同上; */
275 | bindanimationfinish?: EventHandle;
276 |
277 | }
278 |
279 | /** */
280 | interface MovableArea extends WxmlElement {
281 |
282 | /** 当里面的movable-view设置为支持双指缩放时,设置此值可将缩放手势生效区域修改为整个movable-area; false */
283 | 'scale-area'?: boolean;
284 |
285 | }
286 |
287 | /** */
288 | interface MovableView extends WxmlElement {
289 |
290 | /** 当里面的movable-view设置为支持双指缩放时,设置此值可将缩放手势生效区域修改为整个movable-area; false */
291 | 'scale-area'?: boolean;
292 |
293 | }
294 |
295 | /** */
296 | interface CoverView extends WxmlElement {
297 |
298 | }
299 |
300 | /** */
301 | interface CoverImage extends WxmlElement {
302 |
303 | }
304 |
305 | /** 图标。 */
306 | interface Icon extends WxmlElement {
307 |
308 | /** icon的类型,有效值:success, success_no_circle, info, warn, waiting, cancel, download, search, clear; */
309 | type?: string;
310 |
311 | /** icon的大小,单位px; 23 */
312 | size?: number;
313 |
314 | /** icon的颜色,同css的color; */
315 | color?: string;
316 |
317 | }
318 |
319 | /** 文本。 */
320 | interface Text extends WxmlElement {
321 |
322 | /** 文本是否可选; false */
323 | selectable?: boolean;
324 |
325 | /** 显示连续空格; false */
326 | space?: string;
327 |
328 | /** 是否解码; false */
329 | decode?: boolean;
330 |
331 | }
332 |
333 | /** */
334 | interface RichText extends WxmlElement {
335 |
336 | /** 节点列表 / HTML String; [] */
337 | nodes?: string|Array;
338 |
339 | }
340 |
341 | /** 进度条。 */
342 | interface Progress extends WxmlElement {
343 |
344 | /** 百分比0~100; 无 */
345 | percent?: number;
346 |
347 | /** 在进度条右侧显示百分比; false */
348 | 'show-info'?: boolean;
349 |
350 | /** 进度条线的宽度,单位px; 6 */
351 | 'stroke-width'?: number;
352 |
353 | /** 进度条颜色 (请使用 activeColor); #09BB07 */
354 | color?: string;
355 |
356 | /** 已选择的进度条的颜色; */
357 | activeColor?: string;
358 |
359 | /** 未选择的进度条的颜色; */
360 | backgroundColor?: string;
361 |
362 | /** 进度条从左往右的动画; false */
363 | active?: boolean;
364 |
365 | /** backwards: 动画从头播;forwards:动画从上次结束点接着播; backwards */
366 | 'active-mode'?: string;
367 |
368 | }
369 |
370 | /** 按钮。 */
371 | interface Button extends WxmlElement {
372 |
373 | /** 按钮的大小; default */
374 | size?: string;
375 |
376 | /** 按钮的样式类型; default */
377 | type?: string;
378 |
379 | /** 按钮是否镂空,背景色透明; false */
380 | plain?: boolean;
381 |
382 | /** 是否禁用; false */
383 | disabled?: boolean;
384 |
385 | /** 名称前是否带 loading 图标; false */
386 | loading?: boolean;
387 |
388 | /** 用于 组件,点击分别会触发 组件的 submit/reset 事件; */
389 | 'form-type'?: string;
390 |
391 | /** 微信开放能力; */
392 | 'open-type'?: string;
393 |
394 | /** 打开 APP 时,向 APP 传递的参数; */
395 | 'app-parameter'?: string;
396 |
397 | /** 指定按钮按下去的样式类。当 hover-class="none" 时,没有点击态效果; button-hover */
398 | 'hover-class'?: string;
399 |
400 | /** 指定是否阻止本节点的祖先节点出现点击态; false */
401 | 'hover-stop-propagation'?: boolean;
402 |
403 | /** 按住后多久出现点击态,单位毫秒; 20 */
404 | 'hover-start-time'?: number;
405 |
406 | /** 手指松开后点击态保留时间,单位毫秒; 70 */
407 | 'hover-stay-time'?: number;
408 |
409 | /** 用户点击该按钮时,会返回获取到的用户信息,从返回参数的detail中获取到的值同wx.getUserInfo; */
410 | bindgetuserinfo?: EventHandle;
411 |
412 | /** 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。; en */
413 | lang?: string;
414 |
415 | /** 会话来源; */
416 | 'session-from'?: string;
417 |
418 | /** 会话内消息卡片标题; 当前标题 */
419 | 'send-message-title'?: string;
420 |
421 | /** 会话内消息卡片点击跳转小程序路径; 当前分享路径 */
422 | 'send-message-path'?: string;
423 |
424 | /** 会话内消息卡片图片; 截图 */
425 | 'send-message-img'?: string;
426 |
427 | /** 显示会话内消息卡片; false */
428 | 'show-message-card'?: boolean;
429 |
430 | /** 客服消息回调; */
431 | bindcontact?: EventHandle;
432 |
433 | /** 获取用户手机号回调; */
434 | bindgetphonenumber?: EventHandle;
435 |
436 | /** 当使用开放能力时,发生错误的回调; */
437 | binderror?: EventHandle;
438 |
439 | }
440 |
441 | /** 多项选择器,内部由多个checkbox组成。 */
442 | interface CheckboxGroup extends WxmlElement {
443 |
444 | /** 中选中项发生改变是触发 change 事件,detail = {value:[选中的checkbox的value的数组]}; */
445 | bindchange?: EventHandle;
446 |
447 | }
448 |
449 | /** 多选项目。 */
450 | interface Checkbox extends WxmlElement {
451 |
452 | /** 中选中项发生改变是触发 change 事件,detail = {value:[选中的checkbox的value的数组]}; */
453 | bindchange?: EventHandle;
454 |
455 | }
456 |
457 | /** 表单,将组件内的用户输入的 提交。 */
458 | interface Form extends WxmlElement {
459 |
460 | /** ; 是否返回 formId 用于发送模板消息 */
461 | 'report-submit'?: boolean;
462 |
463 | /** ; 携带 form 中的数据触发 submit 事件,event.detail = {value : {'name': 'value'} , formId: ''} */
464 | bindsubmit?: EventHandle;
465 |
466 | /** ; 表单重置时会触发 reset 事件 */
467 | bindreset?: EventHandle;
468 |
469 | }
470 |
471 | /** 输入框。 */
472 | interface Input extends WxmlElement {
473 |
474 | /** 输入框的初始内容; */
475 | value?: string;
476 |
477 | /** input 的类型; "text" */
478 | type?: string;
479 |
480 | /** 是否是密码类型; false */
481 | password?: boolean;
482 |
483 | /** 输入框为空时占位符; */
484 | placeholder?: string;
485 |
486 | /** 指定 placeholder 的样式; */
487 | 'placeholder-style'?: string;
488 |
489 | /** 指定 placeholder 的样式类; "input-placeholder" */
490 | 'placeholder-class'?: string;
491 |
492 | /** 是否禁用; false */
493 | disabled?: boolean;
494 |
495 | /** 最大输入长度,设置为 -1 的时候不限制最大长度; 140 */
496 | maxlength?: number;
497 |
498 | /** 指定光标与键盘的距离,单位 px 。取 input 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离; 0 */
499 | 'cursor-spacing'?: number;
500 |
501 | /** (即将废弃,请直接使用 focus )自动聚焦,拉起键盘; false */
502 | 'auto-focus'?: boolean;
503 |
504 | /** 获取焦点; false */
505 | focus?: boolean;
506 |
507 | /** 设置键盘右下角按钮的文字; "done" */
508 | 'confirm-type'?: string;
509 |
510 | /** 点击键盘右下角按钮时是否保持键盘不收起; false */
511 | 'confirm-hold'?: boolean;
512 |
513 | /** 指定focus时的光标位置; */
514 | cursor?: number;
515 |
516 | /** 光标起始位置,自动聚集时有效,需与selection-end搭配使用; -1 */
517 | 'selection-start'?: number;
518 |
519 | /** 光标结束位置,自动聚集时有效,需与selection-start搭配使用; -1 */
520 | 'selection-end'?: number;
521 |
522 | /** 键盘弹起时,是否自动上推页面; true */
523 | 'adjust-position'?: boolean;
524 |
525 | /** 当键盘输入时,触发input事件,event.detail = {value, cursor},处理函数可以直接 return 一个字符串,将替换输入框的内容。; */
526 | bindinput?: EventHandle;
527 |
528 | /** 输入框聚焦时触发,event.detail = { value, height },height 参数在基础库 1.9.90 起支持; */
529 | bindfocus?: EventHandle;
530 |
531 | /** 输入框失去焦点时触发,event.detail = {value: value}; */
532 | bindblur?: EventHandle;
533 |
534 | /** 点击完成按钮时触发,event.detail = {value: value}; */
535 | bindconfirm?: EventHandle;
536 |
537 | }
538 |
539 | /** 用来改进表单组件的可用性,使用for属性找到对应的id,或者将控件放在该标签下,当点击时,就会触发对应的控件。 */
540 | interface Label extends WxmlElement {
541 |
542 | /** ; 绑定控件的 id */
543 | for?: string;
544 |
545 | }
546 |
547 | /** 从底部弹起的滚动选择器,现支持五种选择器,通过mode来区分,分别是普通选择器,多列选择器,时间选择器,日期选择器,省市区选择器,默认是普通选择器。 */
548 | interface Picker extends WxmlElement {
549 |
550 | /** mode为 selector 或 multiSelector 时,range 有效; [] */
551 | range?: Array;
552 |
553 | /** 当 range 是一个 Object Array 时,通过 range-key 来指定 Object 中 key 的值作为选择器显示内容; */
554 | 'range-key'?: string;
555 |
556 | /** value 的值表示选择了 range 中的第几个(下标从 0 开始); 0 */
557 | value?: number;
558 |
559 | /** value 改变时触发 change 事件,event.detail = {value: value}; */
560 | bindchange?: EventHandle;
561 |
562 | /** 是否禁用; false */
563 | disabled?: boolean;
564 |
565 | /** 取消选择或点遮罩层收起 picker 时触发; */
566 | bindcancel?: EventHandle;
567 |
568 | }
569 |
570 | /** 嵌入页面的滚动选择器 */
571 | interface PickerView extends WxmlElement {
572 |
573 | /** ; 数组中的数字依次表示 picker-view 内的 picker-view-colume 选择的第几项(下标从 0 开始),数字大于 picker-view-column 可选项长度时,选择最后一项。 */
574 | value?: Array;
575 |
576 | /** ; 设置选择器中间选中框的样式 */
577 | 'indicator-style'?: string;
578 |
579 | /** 1.1.0; 设置选择器中间选中框的类名 */
580 | 'indicator-class'?: string;
581 |
582 | /** 1.5.0; 设置蒙层的样式 */
583 | 'mask-style'?: string;
584 |
585 | /** 1.5.0; 设置蒙层的类名 */
586 | 'mask-class'?: string;
587 |
588 | /** ; 当滚动选择,value 改变时触发 change 事件,event.detail = {value: value};value为数组,表示 picker-view 内的 picker-view-column 当前选择的是第几项(下标从 0 开始) */
589 | bindchange?: EventHandle;
590 |
591 | }
592 |
593 | /** 仅可放置于中,其孩子节点的高度会自动设置成与picker-view的选中框的高度一致 */
594 | interface PickerViewColumn extends WxmlElement {
595 |
596 | /** ; 数组中的数字依次表示 picker-view 内的 picker-view-colume 选择的第几项(下标从 0 开始),数字大于 picker-view-column 可选项长度时,选择最后一项。 */
597 | value?: Array;
598 |
599 | /** ; 设置选择器中间选中框的样式 */
600 | 'indicator-style'?: string;
601 |
602 | /** 1.1.0; 设置选择器中间选中框的类名 */
603 | 'indicator-class'?: string;
604 |
605 | /** 1.5.0; 设置蒙层的样式 */
606 | 'mask-style'?: string;
607 |
608 | /** 1.5.0; 设置蒙层的类名 */
609 | 'mask-class'?: string;
610 |
611 | /** ; 当滚动选择,value 改变时触发 change 事件,event.detail = {value: value};value为数组,表示 picker-view 内的 picker-view-column 当前选择的是第几项(下标从 0 开始) */
612 | bindchange?: EventHandle;
613 |
614 | }
615 |
616 | /** */
617 | interface Tips extends WxmlElement {
618 |
619 | /** ; 数组中的数字依次表示 picker-view 内的 picker-view-colume 选择的第几项(下标从 0 开始),数字大于 picker-view-column 可选项长度时,选择最后一项。 */
620 | value?: Array;
621 |
622 | /** ; 设置选择器中间选中框的样式 */
623 | 'indicator-style'?: string;
624 |
625 | /** 1.1.0; 设置选择器中间选中框的类名 */
626 | 'indicator-class'?: string;
627 |
628 | /** 1.5.0; 设置蒙层的样式 */
629 | 'mask-style'?: string;
630 |
631 | /** 1.5.0; 设置蒙层的类名 */
632 | 'mask-class'?: string;
633 |
634 | /** ; 当滚动选择,value 改变时触发 change 事件,event.detail = {value: value};value为数组,表示 picker-view 内的 picker-view-column 当前选择的是第几项(下标从 0 开始) */
635 | bindchange?: EventHandle;
636 |
637 | }
638 |
639 | /** 单项选择器,内部由多个组成。 */
640 | interface RadioGroup extends WxmlElement {
641 |
642 | /** 中的选中项发生变化时触发 change 事件,event.detail = {value: 选中项radio的value}; */
643 | bindchange?: EventHandle;
644 |
645 | }
646 |
647 | /** 单选项目 */
648 | interface Radio extends WxmlElement {
649 |
650 | /** 中的选中项发生变化时触发 change 事件,event.detail = {value: 选中项radio的value}; */
651 | bindchange?: EventHandle;
652 |
653 | }
654 |
655 | /** 滑动选择器。 */
656 | interface Slider extends WxmlElement {
657 |
658 | /** 最小值; 0 */
659 | min?: number;
660 |
661 | /** 最大值; 100 */
662 | max?: number;
663 |
664 | /** 步长,取值必须大于 0,并且可被(max - min)整除; 1 */
665 | step?: number;
666 |
667 | /** 是否禁用; false */
668 | disabled?: boolean;
669 |
670 | /** 当前取值; 0 */
671 | value?: number;
672 |
673 | /** 背景条的颜色(请使用 backgroundColor); #e9e9e9 */
674 | color?: string;
675 |
676 | /** 已选择的颜色(请使用 activeColor); #1aad19 */
677 | 'selected-color'?: string;
678 |
679 | /** 已选择的颜色; #1aad19 */
680 | activeColor?: string;
681 |
682 | /** 背景条的颜色; #e9e9e9 */
683 | backgroundColor?: string;
684 |
685 | /** 滑块的大小,取值范围为 12 - 28; 28 */
686 | 'block-size'?: number;
687 |
688 | /** 滑块的颜色; #ffffff */
689 | 'block-color'?: string;
690 |
691 | /** 是否显示当前 value; false */
692 | 'show-value'?: boolean;
693 |
694 | /** 完成一次拖动后触发的事件,event.detail = {value: value}; */
695 | bindchange?: EventHandle;
696 |
697 | /** 拖动过程中触发的事件,event.detail = {value: value}; */
698 | bindchanging?: EventHandle;
699 |
700 | }
701 |
702 | /** 开关选择器。 */
703 | interface Switch extends WxmlElement {
704 |
705 | /** 是否选中; false */
706 | checked?: boolean;
707 |
708 | /** 样式,有效值:switch, checkbox; switch */
709 | type?: string;
710 |
711 | /** checked 改变时触发 change 事件,event.detail={ value:checked}; */
712 | bindchange?: EventHandle;
713 |
714 | /** switch 的颜色,同 css 的 color; */
715 | color?: string;
716 |
717 | }
718 |
719 | /** 多行输入框。 */
720 | interface Textarea extends WxmlElement {
721 |
722 | /** 输入框的内容; */
723 | value?: string;
724 |
725 | /** 输入框为空时占位符; */
726 | placeholder?: string;
727 |
728 | /** 指定 placeholder 的样式; */
729 | 'placeholder-style'?: string;
730 |
731 | /** 指定 placeholder 的样式类; textarea-placeholder */
732 | 'placeholder-class'?: string;
733 |
734 | /** 是否禁用; false */
735 | disabled?: boolean;
736 |
737 | /** 最大输入长度,设置为 -1 的时候不限制最大长度; 140 */
738 | maxlength?: number;
739 |
740 | /** 自动聚焦,拉起键盘。; false */
741 | 'auto-focus'?: boolean;
742 |
743 | /** 获取焦点; false */
744 | focus?: boolean;
745 |
746 | /** 是否自动增高,设置auto-height时,style.height不生效; false */
747 | 'auto-height'?: boolean;
748 |
749 | /** 如果 textarea 是在一个 position:fixed 的区域,需要显示指定属性 fixed 为 true; false */
750 | fixed?: boolean;
751 |
752 | /** 指定光标与键盘的距离,单位 px 。取 textarea 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离; 0 */
753 | 'cursor-spacing'?: number;
754 |
755 | /** 指定focus时的光标位置; */
756 | cursor?: number;
757 |
758 | /** 是否显示键盘上方带有”完成“按钮那一栏; true */
759 | 'show-confirm-bar'?: boolean;
760 |
761 | /** 光标起始位置,自动聚集时有效,需与selection-end搭配使用; -1 */
762 | 'selection-start'?: number;
763 |
764 | /** 光标结束位置,自动聚集时有效,需与selection-start搭配使用; -1 */
765 | 'selection-end'?: number;
766 |
767 | /** 键盘弹起时,是否自动上推页面; true */
768 | 'adjust-position'?: boolean;
769 |
770 | /** 输入框聚焦时触发,event.detail = { value, height },height 参数在基础库 1.9.90 起支持; */
771 | bindfocus?: EventHandle;
772 |
773 | /** 输入框失去焦点时触发,event.detail = {value, cursor}; */
774 | bindblur?: EventHandle;
775 |
776 | /** 输入框行数变化时调用,event.detail = {height: 0, heightRpx: 0, lineCount: 0}; */
777 | bindlinechange?: EventHandle;
778 |
779 | /** 当键盘输入时,触发 input 事件,event.detail = {value, cursor}, bindinput 处理函数的返回值并不会反映到 textarea 上 ; */
780 | bindinput?: EventHandle;
781 |
782 | /** 点击完成时, 触发 confirm 事件,event.detail = {value: value}; */
783 | bindconfirm?: EventHandle;
784 |
785 | }
786 |
787 | /** 页面链接。 */
788 | interface Navigator extends WxmlElement {
789 |
790 | /** 应用内的跳转链接; */
791 | url?: string;
792 |
793 | /** 跳转方式; navigate */
794 | 'open-type'?: string;
795 |
796 | /** 当 open-type 为 'navigateBack' 时有效,表示回退的层数; */
797 | delta?: number;
798 |
799 | /** 指定点击时的样式类,当hover-class="none"时,没有点击态效果; navigator-hover */
800 | 'hover-class'?: string;
801 |
802 | /** 指定是否阻止本节点的祖先节点出现点击态; false */
803 | 'hover-stop-propagation'?: boolean;
804 |
805 | /** 按住后多久出现点击态,单位毫秒; 50 */
806 | 'hover-start-time'?: number;
807 |
808 | /** 手指松开后点击态保留时间,单位毫秒; 600 */
809 | 'hover-stay-time'?: number;
810 |
811 | }
812 |
813 | /** 注意:1.6.0 版本开始,该组件不再维护。建议使用能力更强的 wx.createInnerAudioContext 接口 */
814 | interface Audio extends WxmlElement {
815 |
816 | /** audio 组件的唯一标识符; */
817 | id?: string;
818 |
819 | /** 要播放音频的资源地址; */
820 | src?: string;
821 |
822 | /** 是否循环播放; false */
823 | loop?: boolean;
824 |
825 | /** 是否显示默认控件; false */
826 | controls?: boolean;
827 |
828 | /** 默认控件上的音频封面的图片资源地址,如果 controls 属性值为 false 则设置 poster 无效; */
829 | poster?: string;
830 |
831 | /** 默认控件上的音频名字,如果 controls 属性值为 false 则设置 name 无效; 未知音频 */
832 | name?: string;
833 |
834 | /** 默认控件上的作者名字,如果 controls 属性值为 false 则设置 author 无效; 未知作者 */
835 | author?: string;
836 |
837 | /** 当发生错误时触发 error 事件,detail = {errMsg: MediaError.code}; */
838 | binderror?: EventHandle;
839 |
840 | /** 当开始/继续播放时触发play事件; */
841 | bindplay?: EventHandle;
842 |
843 | /** 当暂停播放时触发 pause 事件; */
844 | bindpause?: EventHandle;
845 |
846 | /** 当播放进度改变时触发 timeupdate 事件,detail = {currentTime, duration}; */
847 | bindtimeupdate?: EventHandle;
848 |
849 | /** 当播放到末尾时触发 ended 事件; */
850 | bindended?: EventHandle;
851 |
852 | }
853 |
854 | /** 图片。 */
855 | interface Image extends WxmlElement {
856 |
857 | /** 图片资源地址; */
858 | src?: string;
859 |
860 | /** 图片裁剪、缩放的模式; 'scaleToFill' */
861 | mode?: string;
862 |
863 | /** 图片懒加载。只针对page与scroll-view下的image有效; false */
864 | 'lazy-load'?: boolean;
865 |
866 | /** 当错误发生时,发布到 AppService 的事件名,事件对象event.detail = {errMsg: 'something wrong'}; */
867 | binderror?: EventHandle;
868 |
869 | /** 当图片载入完毕时,发布到 AppService 的事件名,事件对象event.detail = {height:'图片高度px', width:'图片宽度px'}; */
870 | bindload?: EventHandle;
871 |
872 | }
873 |
874 | /** 视频。 */
875 | interface Video extends WxmlElement {
876 |
877 | /** 要播放视频的资源地址; */
878 | src?: string;
879 |
880 | /** 指定视频初始播放位置; */
881 | 'initial-time'?: number;
882 |
883 | /** 指定视频时长; */
884 | duration?: number;
885 |
886 | /** 是否显示默认播放控件(播放/暂停按钮、播放进度、时间); true */
887 | controls?: boolean;
888 |
889 | /** 弹幕列表; */
890 | 'danmu-list'?: Array