| @@ -0,0 +1,31 @@ | |||
| /* | |||
| * Eslint config file | |||
| * Documentation: https://eslint.org/docs/user-guide/configuring/ | |||
| * Install the Eslint extension before using this feature. | |||
| */ | |||
| module.exports = { | |||
| env: { | |||
| es6: true, | |||
| browser: true, | |||
| node: true, | |||
| }, | |||
| ecmaFeatures: { | |||
| modules: true, | |||
| }, | |||
| parserOptions: { | |||
| ecmaVersion: 2018, | |||
| sourceType: 'module', | |||
| }, | |||
| globals: { | |||
| wx: true, | |||
| App: true, | |||
| Page: true, | |||
| getCurrentPages: true, | |||
| getApp: true, | |||
| Component: true, | |||
| requirePlugin: true, | |||
| requireMiniProgram: true, | |||
| }, | |||
| // extends: 'eslint:recommended', | |||
| rules: {}, | |||
| } | |||
| @@ -0,0 +1,14 @@ | |||
| { | |||
| "pages": [ | |||
| "pages/index/index", | |||
| "pages/logs/logs" | |||
| ], | |||
| "window": { | |||
| "backgroundTextStyle": "light", | |||
| "navigationBarBackgroundColor": "#fff", | |||
| "navigationBarTitleText": "Weixin", | |||
| "navigationBarTextStyle": "black" | |||
| }, | |||
| "style": "v2", | |||
| "sitemapLocation": "sitemap.json" | |||
| } | |||
| @@ -0,0 +1,10 @@ | |||
| /**app.wxss**/ | |||
| .container { | |||
| height: 100%; | |||
| display: flex; | |||
| flex-direction: column; | |||
| align-items: center; | |||
| justify-content: space-between; | |||
| padding: 200rpx 0; | |||
| box-sizing: border-box; | |||
| } | |||
| @@ -0,0 +1,18 @@ | |||
| // app.ts | |||
| App<IAppOption>({ | |||
| globalData: {}, | |||
| onLaunch() { | |||
| // 展示本地存储能力 | |||
| const logs = wx.getStorageSync('logs') || [] | |||
| logs.unshift(Date.now()) | |||
| wx.setStorageSync('logs', logs) | |||
| // 登录 | |||
| wx.login({ | |||
| success: res => { | |||
| console.log(res.code) | |||
| // 发送 res.code 到后台换取 openId, sessionKey, unionId | |||
| }, | |||
| }) | |||
| }, | |||
| }) | |||
| @@ -0,0 +1,3 @@ | |||
| { | |||
| "usingComponents": {} | |||
| } | |||
| @@ -0,0 +1,19 @@ | |||
| /**index.wxss**/ | |||
| .userinfo { | |||
| display: flex; | |||
| flex-direction: column; | |||
| align-items: center; | |||
| color: #aaa; | |||
| } | |||
| .userinfo-avatar { | |||
| overflow: hidden; | |||
| width: 128rpx; | |||
| height: 128rpx; | |||
| margin: 20rpx; | |||
| border-radius: 50%; | |||
| } | |||
| .usermotto { | |||
| margin-top: 200px; | |||
| } | |||
| @@ -0,0 +1,49 @@ | |||
| // index.ts | |||
| // 获取应用实例 | |||
| const app = getApp<IAppOption>() | |||
| Page({ | |||
| data: { | |||
| motto: 'Hello World', | |||
| userInfo: {}, | |||
| hasUserInfo: false, | |||
| canIUse: wx.canIUse('button.open-type.getUserInfo'), | |||
| canIUseGetUserProfile: false, | |||
| canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName') // 如需尝试获取用户信息可改为false | |||
| }, | |||
| // 事件处理函数 | |||
| bindViewTap() { | |||
| wx.navigateTo({ | |||
| url: '../logs/logs', | |||
| }) | |||
| }, | |||
| onLoad() { | |||
| // @ts-ignore | |||
| if (wx.getUserProfile) { | |||
| this.setData({ | |||
| canIUseGetUserProfile: true | |||
| }) | |||
| } | |||
| }, | |||
| getUserProfile() { | |||
| // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗 | |||
| wx.getUserProfile({ | |||
| desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写 | |||
| success: (res) => { | |||
| console.log(res) | |||
| this.setData({ | |||
| userInfo: res.userInfo, | |||
| hasUserInfo: true | |||
| }) | |||
| } | |||
| }) | |||
| }, | |||
| getUserInfo(e: any) { | |||
| // 不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息 | |||
| console.log(e) | |||
| this.setData({ | |||
| userInfo: e.detail.userInfo, | |||
| hasUserInfo: true | |||
| }) | |||
| } | |||
| }) | |||
| @@ -0,0 +1,23 @@ | |||
| <!--index.wxml--> | |||
| <view class="container"> | |||
| <view class="userinfo"> | |||
| <block wx:if="{{canIUseOpenData}}"> | |||
| <view class="userinfo-avatar" bindtap="bindViewTap"> | |||
| <open-data type="userAvatarUrl"></open-data> | |||
| </view> | |||
| <open-data type="userNickName"></open-data> | |||
| </block> | |||
| <block wx:elif="{{!hasUserInfo}}"> | |||
| <button wx:if="{{canIUseGetUserProfile}}" bindtap="getUserProfile"> 获取头像昵称 </button> | |||
| <button wx:elif="{{canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button> | |||
| <view wx:else> 请使用1.4.4及以上版本基础库 </view> | |||
| </block> | |||
| <block wx:else> | |||
| <image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image> | |||
| <text class="userinfo-nickname">{{userInfo.nickName}}</text> | |||
| </block> | |||
| </view> | |||
| <view class="usermotto"> | |||
| <text class="user-motto">{{motto}}</text> | |||
| </view> | |||
| </view> | |||
| @@ -0,0 +1,4 @@ | |||
| { | |||
| "navigationBarTitleText": "查看启动日志", | |||
| "usingComponents": {} | |||
| } | |||
| @@ -0,0 +1,19 @@ | |||
| // logs.ts | |||
| // const util = require('../../utils/util.js') | |||
| import { formatTime } from '../../utils/util' | |||
| Page({ | |||
| data: { | |||
| logs: [], | |||
| }, | |||
| onLoad() { | |||
| this.setData({ | |||
| logs: (wx.getStorageSync('logs') || []).map((log: string) => { | |||
| return { | |||
| date: formatTime(new Date(log)), | |||
| timeStamp: log | |||
| } | |||
| }), | |||
| }) | |||
| }, | |||
| }) | |||
| @@ -0,0 +1,6 @@ | |||
| <!--logs.wxml--> | |||
| <view class="container log-list"> | |||
| <block wx:for="{{logs}}" wx:key="timeStamp" wx:for-item="log"> | |||
| <text class="log-item">{{index + 1}}. {{log.date}}</text> | |||
| </block> | |||
| </view> | |||
| @@ -0,0 +1,8 @@ | |||
| .log-list { | |||
| display: flex; | |||
| flex-direction: column; | |||
| padding: 40rpx; | |||
| } | |||
| .log-item { | |||
| margin: 10rpx; | |||
| } | |||
| @@ -0,0 +1,7 @@ | |||
| { | |||
| "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", | |||
| "rules": [{ | |||
| "action": "allow", | |||
| "page": "*" | |||
| }] | |||
| } | |||
| @@ -0,0 +1,19 @@ | |||
| export const formatTime = (date: Date) => { | |||
| const year = date.getFullYear() | |||
| const month = date.getMonth() + 1 | |||
| const day = date.getDate() | |||
| const hour = date.getHours() | |||
| const minute = date.getMinutes() | |||
| const second = date.getSeconds() | |||
| return ( | |||
| [year, month, day].map(formatNumber).join('/') + | |||
| ' ' + | |||
| [hour, minute, second].map(formatNumber).join(':') | |||
| ) | |||
| } | |||
| const formatNumber = (n: number) => { | |||
| const s = n.toString() | |||
| return s[1] ? s : '0' + s | |||
| } | |||
| @@ -0,0 +1,15 @@ | |||
| { | |||
| "name": "miniprogram-ts-less-quickstart", | |||
| "version": "1.0.0", | |||
| "description": "", | |||
| "scripts": { | |||
| }, | |||
| "keywords": [], | |||
| "author": "", | |||
| "license": "", | |||
| "dependencies": { | |||
| }, | |||
| "devDependencies": { | |||
| "miniprogram-api-typings": "^2.8.3-1" | |||
| } | |||
| } | |||
| @@ -0,0 +1,33 @@ | |||
| { | |||
| "description": "项目配置文件", | |||
| "packOptions": { | |||
| "ignore": [], | |||
| "include": [] | |||
| }, | |||
| "miniprogramRoot": "miniprogram/", | |||
| "compileType": "miniprogram", | |||
| "projectname": "ts-less-demo", | |||
| "setting": { | |||
| "useCompilerPlugins": [ | |||
| "typescript", | |||
| "less" | |||
| ], | |||
| "babelSetting": { | |||
| "ignore": [], | |||
| "disablePlugins": [], | |||
| "outputPath": "" | |||
| }, | |||
| "es6": true, | |||
| "enhance": true | |||
| }, | |||
| "simulatorType": "wechat", | |||
| "simulatorPluginLibVersion": {}, | |||
| "condition": {}, | |||
| "srcMiniprogramRoot": "miniprogram/", | |||
| "appid": "wxf288a9b8167ff2ca", | |||
| "libVersion": "2.31.0", | |||
| "editorSetting": { | |||
| "tabIndent": "insertSpaces", | |||
| "tabSize": 2 | |||
| } | |||
| } | |||
| @@ -0,0 +1,8 @@ | |||
| { | |||
| "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", | |||
| "projectname": "GPT-Agent", | |||
| "setting": { | |||
| "compileHotReLoad": true | |||
| }, | |||
| "libVersion": "2.30.4" | |||
| } | |||
| @@ -0,0 +1,30 @@ | |||
| { | |||
| "compilerOptions": { | |||
| "strictNullChecks": true, | |||
| "noImplicitAny": true, | |||
| "module": "CommonJS", | |||
| "target": "ES2020", | |||
| "allowJs": true, | |||
| "allowSyntheticDefaultImports": true, | |||
| "esModuleInterop": true, | |||
| "experimentalDecorators": true, | |||
| "noImplicitThis": true, | |||
| "noImplicitReturns": true, | |||
| "alwaysStrict": true, | |||
| "noFallthroughCasesInSwitch": true, | |||
| "noUnusedLocals": true, | |||
| "noUnusedParameters": true, | |||
| "strict": true, | |||
| "strictPropertyInitialization": true, | |||
| "lib": ["ES2020"], | |||
| "typeRoots": [ | |||
| "./typings" | |||
| ] | |||
| }, | |||
| "include": [ | |||
| "./**/*.ts" | |||
| ], | |||
| "exclude": [ | |||
| "node_modules" | |||
| ] | |||
| } | |||
| @@ -0,0 +1,8 @@ | |||
| /// <reference path="./types/index.d.ts" /> | |||
| interface IAppOption { | |||
| globalData: { | |||
| userInfo?: WechatMiniprogram.UserInfo, | |||
| } | |||
| userInfoReadyCallback?: WechatMiniprogram.GetUserInfoSuccessCallback, | |||
| } | |||
| @@ -0,0 +1 @@ | |||
| /// <reference path="./wx/index.d.ts" /> | |||
| @@ -0,0 +1,162 @@ | |||
| /*! ***************************************************************************** | |||
| Copyright (c) 2023 Tencent, Inc. All rights reserved. | |||
| Permission is hereby granted, free of charge, to any person obtaining a copy of | |||
| this software and associated documentation files (the "Software"), to deal in | |||
| the Software without restriction, including without limitation the rights to | |||
| use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies | |||
| of the Software, and to permit persons to whom the Software is furnished to do | |||
| so, subject to the following conditions: | |||
| The above copyright notice and this permission notice shall be included in all | |||
| copies or substantial portions of the Software. | |||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||
| SOFTWARE. | |||
| ***************************************************************************** */ | |||
| /// <reference path="./lib.wx.app.d.ts" /> | |||
| /// <reference path="./lib.wx.page.d.ts" /> | |||
| /// <reference path="./lib.wx.api.d.ts" /> | |||
| /// <reference path="./lib.wx.cloud.d.ts" /> | |||
| /// <reference path="./lib.wx.component.d.ts" /> | |||
| /// <reference path="./lib.wx.behavior.d.ts" /> | |||
| /// <reference path="./lib.wx.event.d.ts" /> | |||
| declare namespace WechatMiniprogram { | |||
| type IAnyObject = Record<string, any> | |||
| type Optional<F> = F extends (arg: infer P) => infer R ? (arg?: P) => R : F | |||
| type OptionalInterface<T> = { [K in keyof T]: Optional<T[K]> } | |||
| interface AsyncMethodOptionLike { | |||
| success?: (...args: any[]) => void | |||
| } | |||
| type PromisifySuccessResult< | |||
| P, | |||
| T extends AsyncMethodOptionLike | |||
| > = P extends { | |||
| success: any | |||
| } | |||
| ? void | |||
| : P extends { fail: any } | |||
| ? void | |||
| : P extends { complete: any } | |||
| ? void | |||
| : Promise<Parameters<Exclude<T['success'], undefined>>[0]> | |||
| // TODO: Extract real definition from `lib.dom.d.ts` to replace this | |||
| type IIRFilterNode = any | |||
| type WaveShaperNode = any | |||
| type ConstantSourceNode = any | |||
| type OscillatorNode = any | |||
| type GainNode = any | |||
| type BiquadFilterNode = any | |||
| type PeriodicWaveNode = any | |||
| type BufferSourceNode = any | |||
| type ChannelSplitterNode = any | |||
| type ChannelMergerNode = any | |||
| type DelayNode = any | |||
| type DynamicsCompressorNode = any | |||
| type ScriptProcessorNode = any | |||
| type PannerNode = any | |||
| type AnalyserNode = any | |||
| type AudioListener = any | |||
| type WebGLTexture = any | |||
| type WebGLRenderingContext = any | |||
| // TODO: fill worklet type | |||
| type WorkletFunction = (...args: any) => any | |||
| type AnimationObject = any | |||
| type SharedValue<T = any> = T | |||
| type DerivedValue<T = any> = T | |||
| } | |||
| declare let console: WechatMiniprogram.Console | |||
| declare let wx: WechatMiniprogram.Wx | |||
| /** 引入模块。返回模块通过 `module.exports` 或 `exports` 暴露的接口。 */ | |||
| interface Require { | |||
| ( | |||
| /** 需要引入模块文件相对于当前文件的相对路径,或 npm 模块名,或 npm 模块路径。不支持绝对路径 */ | |||
| module: string, | |||
| /** 用于异步获取其他分包中的模块的引用结果,详见 [分包异步化]((subpackages/async)) */ | |||
| callback?: (moduleExport: any) => void, | |||
| /** 异步获取分包失败时的回调,详见 [分包异步化]((subpackages/async)) */ | |||
| errorCallback?: (err: any) => void | |||
| ): any | |||
| /** 以 Promise 形式异步引入模块。返回模块通过 `module.exports` 或 `exports` 暴露的接口。 */ | |||
| async( | |||
| /** 需要引入模块文件相对于当前文件的相对路径,或 npm 模块名,或 npm 模块路径。不支持绝对路径 */ | |||
| module: string | |||
| ): Promise<any> | |||
| } | |||
| declare const require: Require | |||
| /** 引入插件。返回插件通过 `main` 暴露的接口。 */ | |||
| interface RequirePlugin { | |||
| ( | |||
| /** 需要引入的插件的 alias */ | |||
| module: string, | |||
| /** 用于异步获取其他分包中的插件的引用结果,详见 [分包异步化]((subpackages/async)) */ | |||
| callback?: (pluginExport: any) => void | |||
| ): any | |||
| /** 以 Promise 形式异步引入插件。返回插件通过 `main` 暴露的接口。 */ | |||
| async( | |||
| /** 需要引入的插件的 alias */ | |||
| module: string | |||
| ): Promise<any> | |||
| } | |||
| declare const requirePlugin: RequirePlugin | |||
| /** 插件引入当前使用者小程序。返回使用者小程序通过 [插件配置中 `export` 暴露的接口](https://developers.weixin.qq.com/miniprogram/dev/framework/plugin/using.html#%E5%AF%BC%E5%87%BA%E5%88%B0%E6%8F%92%E4%BB%B6)。 | |||
| * | |||
| * 该接口只在插件中存在 | |||
| * | |||
| * 最低基础库: `2.11.1` */ | |||
| declare function requireMiniProgram(): any | |||
| /** 当前模块对象 */ | |||
| declare let module: { | |||
| /** 模块向外暴露的对象,使用 `require` 引用该模块时可以获取 */ | |||
| exports: any | |||
| } | |||
| /** `module.exports` 的引用 */ | |||
| declare let exports: any | |||
| /** [clearInterval(number intervalID)](https://developers.weixin.qq.com/miniprogram/dev/api/base/timer/clearInterval.html) | |||
| * | |||
| * 取消由 setInterval 设置的定时器。 */ | |||
| declare function clearInterval( | |||
| /** 要取消的定时器的 ID */ | |||
| intervalID: number | |||
| ): void | |||
| /** [clearTimeout(number timeoutID)](https://developers.weixin.qq.com/miniprogram/dev/api/base/timer/clearTimeout.html) | |||
| * | |||
| * 取消由 setTimeout 设置的定时器。 */ | |||
| declare function clearTimeout( | |||
| /** 要取消的定时器的 ID */ | |||
| timeoutID: number | |||
| ): void | |||
| /** [number setInterval(function callback, number delay, any rest)](https://developers.weixin.qq.com/miniprogram/dev/api/base/timer/setInterval.html) | |||
| * | |||
| * 设定一个定时器。按照指定的周期(以毫秒计)来执行注册的回调函数 */ | |||
| declare function setInterval( | |||
| /** 回调函数 */ | |||
| callback: (...args: any[]) => any, | |||
| /** 执行回调函数之间的时间间隔,单位 ms。 */ | |||
| delay?: number, | |||
| /** param1, param2, ..., paramN 等附加参数,它们会作为参数传递给回调函数。 */ | |||
| rest?: any | |||
| ): number | |||
| /** [number setTimeout(function callback, number delay, any rest)](https://developers.weixin.qq.com/miniprogram/dev/api/base/timer/setTimeout.html) | |||
| * | |||
| * 设定一个定时器。在定时到期以后执行注册的回调函数 */ | |||
| declare function setTimeout( | |||
| /** 回调函数 */ | |||
| callback: (...args: any[]) => any, | |||
| /** 延迟的时间,函数的调用会在该延迟之后发生,单位 ms。 */ | |||
| delay?: number, | |||
| /** param1, param2, ..., paramN 等附加参数,它们会作为参数传递给回调函数。 */ | |||
| rest?: any | |||
| ): number | |||
| @@ -0,0 +1,416 @@ | |||
| /*! ***************************************************************************** | |||
| Copyright (c) 2023 Tencent, Inc. All rights reserved. | |||
| Permission is hereby granted, free of charge, to any person obtaining a copy of | |||
| this software and associated documentation files (the "Software"), to deal in | |||
| the Software without restriction, including without limitation the rights to | |||
| use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies | |||
| of the Software, and to permit persons to whom the Software is furnished to do | |||
| so, subject to the following conditions: | |||
| The above copyright notice and this permission notice shall be included in all | |||
| copies or substantial portions of the Software. | |||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||
| SOFTWARE. | |||
| ***************************************************************************** */ | |||
| declare namespace WechatMiniprogram.App { | |||
| interface ReferrerInfo { | |||
| /** 来源小程序或公众号或App的 appId | |||
| * | |||
| * 以下场景支持返回 referrerInfo.appId: | |||
| * - 1020(公众号 profile 页相关小程序列表): appId | |||
| * - 1035(公众号自定义菜单):来源公众号 appId | |||
| * - 1036(App 分享消息卡片):来源应用 appId | |||
| * - 1037(小程序打开小程序):来源小程序 appId | |||
| * - 1038(从另一个小程序返回):来源小程序 appId | |||
| * - 1043(公众号模板消息):来源公众号 appId | |||
| */ | |||
| appId: string | |||
| /** 来源小程序传过来的数据,scene=1037或1038时支持 */ | |||
| extraData?: any | |||
| } | |||
| type SceneValues = | |||
| | 1000 | |||
| | 1001 | |||
| | 1005 | |||
| | 1006 | |||
| | 1007 | |||
| | 1008 | |||
| | 1010 | |||
| | 1011 | |||
| | 1012 | |||
| | 1013 | |||
| | 1014 | |||
| | 1017 | |||
| | 1019 | |||
| | 1020 | |||
| | 1022 | |||
| | 1023 | |||
| | 1024 | |||
| | 1025 | |||
| | 1026 | |||
| | 1027 | |||
| | 1028 | |||
| | 1029 | |||
| | 1030 | |||
| | 1031 | |||
| | 1032 | |||
| | 1034 | |||
| | 1035 | |||
| | 1036 | |||
| | 1037 | |||
| | 1038 | |||
| | 1039 | |||
| | 1042 | |||
| | 1043 | |||
| | 1044 | |||
| | 1045 | |||
| | 1046 | |||
| | 1047 | |||
| | 1048 | |||
| | 1049 | |||
| | 1052 | |||
| | 1053 | |||
| | 1054 | |||
| | 1056 | |||
| | 1057 | |||
| | 1058 | |||
| | 1059 | |||
| | 1060 | |||
| | 1064 | |||
| | 1065 | |||
| | 1067 | |||
| | 1068 | |||
| | 1069 | |||
| | 1071 | |||
| | 1072 | |||
| | 1073 | |||
| | 1074 | |||
| | 1077 | |||
| | 1078 | |||
| | 1079 | |||
| | 1081 | |||
| | 1082 | |||
| | 1084 | |||
| | 1088 | |||
| | 1089 | |||
| | 1090 | |||
| | 1091 | |||
| | 1092 | |||
| | 1095 | |||
| | 1096 | |||
| | 1097 | |||
| | 1099 | |||
| | 1100 | |||
| | 1101 | |||
| | 1102 | |||
| | 1103 | |||
| | 1104 | |||
| | 1106 | |||
| | 1107 | |||
| | 1113 | |||
| | 1114 | |||
| | 1119 | |||
| | 1120 | |||
| | 1121 | |||
| | 1124 | |||
| | 1125 | |||
| | 1126 | |||
| | 1129 | |||
| | 1131 | |||
| | 1133 | |||
| | 1135 | |||
| | 1144 | |||
| | 1145 | |||
| | 1146 | |||
| | 1148 | |||
| | 1150 | |||
| | 1151 | |||
| | 1152 | |||
| | 1153 | |||
| | 1154 | |||
| | 1155 | |||
| | 1157 | |||
| | 1158 | |||
| | 1160 | |||
| | 1167 | |||
| | 1168 | |||
| | 1169 | |||
| | 1171 | |||
| | 1173 | |||
| | 1175 | |||
| | 1176 | |||
| | 1177 | |||
| | 1178 | |||
| | 1179 | |||
| | 1181 | |||
| | 1183 | |||
| | 1184 | |||
| | 1185 | |||
| | 1186 | |||
| | 1187 | |||
| | 1189 | |||
| | 1191 | |||
| | 1192 | |||
| | 1193 | |||
| | 1194 | |||
| | 1195 | |||
| | 1196 | |||
| | 1197 | |||
| | 1198 | |||
| | 1200 | |||
| | 1201 | |||
| | 1202 | |||
| | 1203 | |||
| | 1206 | |||
| | 1207 | |||
| | 1208 | |||
| | 1212 | |||
| | 1215 | |||
| | 1216 | |||
| | 1223 | |||
| | 1228 | |||
| | 1231 | |||
| interface LaunchShowOption { | |||
| /** 打开小程序的路径 */ | |||
| path: string | |||
| /** 打开小程序的query */ | |||
| query: IAnyObject | |||
| /** 打开小程序的场景值 | |||
| * - 1000:其他 | |||
| * - 1001:发现栏小程序主入口,「最近使用」列表(基础库 2.2.4 版本起包含「我的小程序」列表) | |||
| * - 1005:微信首页顶部搜索框的搜索结果页 | |||
| * - 1006:发现栏小程序主入口搜索框的搜索结果页 | |||
| * - 1007:单人聊天会话中的小程序消息卡片 | |||
| * - 1008:群聊会话中的小程序消息卡片 | |||
| * - 1010:收藏夹 | |||
| * - 1011:扫描二维码 | |||
| * - 1012:长按图片识别二维码 | |||
| * - 1013:扫描手机相册中选取的二维码 | |||
| * - 1014:小程序订阅消息(与 1107 相同) | |||
| * - 1017:前往小程序体验版的入口页 | |||
| * - 1019:微信钱包(微信客户端 7.0.0 版本改为支付入口) | |||
| * - 1020:公众号 profile 页相关小程序列表(已废弃) | |||
| * - 1022:聊天顶部置顶小程序入口(微信客户端 6.6.1 版本起废弃) | |||
| * - 1023:安卓系统桌面图标 | |||
| * - 1024:小程序 profile 页 | |||
| * - 1025:扫描一维码 | |||
| * - 1026:发现栏小程序主入口,「附近的小程序」列表 | |||
| * - 1027:微信首页顶部搜索框搜索结果页「使用过的小程序」列表 | |||
| * - 1028:我的卡包 | |||
| * - 1029:小程序中的卡券详情页 | |||
| * - 1030:自动化测试下打开小程序 | |||
| * - 1031:长按图片识别一维码 | |||
| * - 1032:扫描手机相册中选取的一维码 | |||
| * - 1034:微信支付完成页 | |||
| * - 1035:公众号自定义菜单 | |||
| * - 1036:App 分享消息卡片 | |||
| * - 1037:小程序打开小程序 | |||
| * - 1038:从另一个小程序返回 | |||
| * - 1039:摇电视 | |||
| * - 1042:添加好友搜索框的搜索结果页 | |||
| * - 1043:公众号模板消息 | |||
| * - 1044:带 shareTicket 的小程序消息卡片 [详情](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.html) | |||
| * - 1045:朋友圈广告 | |||
| * - 1046:朋友圈广告详情页 | |||
| * - 1047:扫描小程序码 | |||
| * - 1048:长按图片识别小程序码 | |||
| * - 1049:扫描手机相册中选取的小程序码 | |||
| * - 1052:卡券的适用门店列表 | |||
| * - 1053:搜一搜的结果页 | |||
| * - 1054:顶部搜索框小程序快捷入口(微信客户端版本 6.7.4 起废弃) | |||
| * - 1056:聊天顶部音乐播放器右上角菜单 | |||
| * - 1057:钱包中的银行卡详情页 | |||
| * - 1058:公众号文章 | |||
| * - 1059:体验版小程序绑定邀请页 | |||
| * - 1060:微信支付完成页(与 1034 相同) | |||
| * - 1064:微信首页连 Wi-Fi 状态栏 | |||
| * - 1065:URL scheme [详情](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/url-scheme.html) | |||
| * - 1067:公众号文章广告 | |||
| * - 1068:附近小程序列表广告(已废弃) | |||
| * - 1069:移动应用通过 openSDK 进入微信,打开小程序 | |||
| * - 1071:钱包中的银行卡列表页 | |||
| * - 1072:二维码收款页面 | |||
| * - 1073:客服消息列表下发的小程序消息卡片 | |||
| * - 1074:公众号会话下发的小程序消息卡片 | |||
| * - 1077:摇周边 | |||
| * - 1078:微信连 Wi-Fi 成功提示页 | |||
| * - 1079:微信游戏中心 | |||
| * - 1081:客服消息下发的文字链 | |||
| * - 1082:公众号会话下发的文字链 | |||
| * - 1084:朋友圈广告原生页 | |||
| * - 1088:会话中查看系统消息,打开小程序 | |||
| * - 1089:微信聊天主界面下拉,「最近使用」栏(基础库 2.2.4 版本起包含「我的小程序」栏) | |||
| * - 1090:长按小程序右上角菜单唤出最近使用历史 | |||
| * - 1091:公众号文章商品卡片 | |||
| * - 1092:城市服务入口 | |||
| * - 1095:小程序广告组件 | |||
| * - 1096:聊天记录,打开小程序 | |||
| * - 1097:微信支付签约原生页,打开小程序 | |||
| * - 1099:页面内嵌插件 | |||
| * - 1100:红包封面详情页打开小程序 | |||
| * - 1101:远程调试热更新(开发者工具中,预览 -> 自动预览 -> 编译并预览) | |||
| * - 1102:公众号 profile 页服务预览 | |||
| * - 1103:发现栏小程序主入口,「我的小程序」列表(基础库 2.2.4 版本起废弃) | |||
| * - 1104:微信聊天主界面下拉,「我的小程序」栏(基础库 2.2.4 版本起废弃) | |||
| * - 1106:聊天主界面下拉,从顶部搜索结果页,打开小程序 | |||
| * - 1107:订阅消息,打开小程序 | |||
| * - 1113:安卓手机负一屏,打开小程序(三星) | |||
| * - 1114:安卓手机侧边栏,打开小程序(三星) | |||
| * - 1119:【企业微信】工作台内打开小程序 | |||
| * - 1120:【企业微信】个人资料页内打开小程序 | |||
| * - 1121:【企业微信】聊天加号附件框内打开小程序 | |||
| * - 1124:扫“一物一码”打开小程序 | |||
| * - 1125:长按图片识别“一物一码” | |||
| * - 1126:扫描手机相册中选取的“一物一码” | |||
| * - 1129:微信爬虫访问 [详情](https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/sitemap.html) | |||
| * - 1131:浮窗(8.0 版本起仅包含被动浮窗) | |||
| * - 1133:硬件设备打开小程序 [详情](https://developers.weixin.qq.com/doc/oplatform/Miniprogram_Frame/) | |||
| * - 1135:小程序 profile 页相关小程序列表,打开小程序 | |||
| * - 1144:公众号文章 - 视频贴片 | |||
| * - 1145:发现栏 - 发现小程序 | |||
| * - 1146:地理位置信息打开出行类小程序 | |||
| * - 1148:卡包-交通卡,打开小程序 | |||
| * - 1150:扫一扫商品条码结果页打开小程序 | |||
| * - 1151:发现栏 - 我的订单 | |||
| * - 1152:订阅号视频打开小程序 | |||
| * - 1153:“识物”结果页打开小程序 | |||
| * - 1154:朋友圈内打开“单页模式” | |||
| * - 1155:“单页模式”打开小程序 | |||
| * - 1157:服务号会话页打开小程序 | |||
| * - 1158:群工具打开小程序 | |||
| * - 1160:群待办 | |||
| * - 1167:H5 通过开放标签打开小程序 [详情](https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html) | |||
| * - 1168:移动应用直接运行小程序 | |||
| * - 1169:发现栏小程序主入口,各个生活服务入口(例如快递服务、出行服务等) | |||
| * - 1171:微信运动记录(仅安卓) | |||
| * - 1173:聊天素材用小程序打开 [详情](https://developers.weixin.qq.com/miniprogram/dev/framework/material/support_material.html) | |||
| * - 1175:视频号主页商店入口 | |||
| * - 1176:视频号直播间主播打开小程序 | |||
| * - 1177:视频号直播商品 | |||
| * - 1178:在电脑打开手机上打开的小程序 | |||
| * - 1179:#话题页打开小程序 | |||
| * - 1181:网站应用打开 PC 小程序 | |||
| * - 1183:PC 微信 - 小程序面板 - 发现小程序 - 搜索 | |||
| * - 1184:视频号链接打开小程序 | |||
| * - 1185:群公告 | |||
| * - 1186:收藏 - 笔记 | |||
| * - 1187:浮窗(8.0 版本起) | |||
| * - 1189:表情雨广告 | |||
| * - 1191:视频号活动 | |||
| * - 1192:企业微信联系人 profile 页 | |||
| * - 1193:视频号主页服务菜单打开小程序 | |||
| * - 1194:URL Link [详情](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/url-link.html) | |||
| * - 1195:视频号主页商品 tab | |||
| * - 1196:个人状态打开小程序 | |||
| * - 1197:视频号主播从直播间返回小游戏 | |||
| * - 1198:视频号开播界面打开小游戏 | |||
| * - 1200:视频号广告打开小程序 | |||
| * - 1201:视频号广告详情页打开小程序 | |||
| * - 1202:企微客服号会话打开小程序卡片 | |||
| * - 1203:微信小程序压测工具的请求 | |||
| * - 1206:视频号小游戏直播间打开小游戏 | |||
| * - 1207:企微客服号会话打开小程序文字链 | |||
| * - 1208:聊天打开商品卡片 | |||
| * - 1212:青少年模式申请页打开小程序 | |||
| * - 1215:广告预约打开小程序 | |||
| * - 1216:视频号订单中心打开小程序 | |||
| * - 1223:安卓桌面 Widget 打开小程序 | |||
| * - 1228:视频号原生广告组件打开小程序 | |||
| * - 1231:动态消息提醒入口打开小程序 | |||
| */ | |||
| scene: SceneValues | |||
| /** shareTicket,详见 [获取更多转发信息]((转发#获取更多转发信息)) */ | |||
| shareTicket: string | |||
| /** 当场景为由从另一个小程序或公众号或App打开时,返回此字段 */ | |||
| referrerInfo?: ReferrerInfo | |||
| } | |||
| interface PageNotFoundOption { | |||
| /** 不存在页面的路径 */ | |||
| path: string | |||
| /** 打开不存在页面的 query */ | |||
| query: IAnyObject | |||
| /** 是否本次启动的首个页面(例如从分享等入口进来,首个页面是开发者配置的分享页面) */ | |||
| isEntryPage: boolean | |||
| } | |||
| interface Option { | |||
| /** 生命周期回调—监听小程序初始化 | |||
| * | |||
| * 小程序初始化完成时触发,全局只触发一次。 | |||
| */ | |||
| onLaunch(options: LaunchShowOption): void | |||
| /** 生命周期回调—监听小程序显示 | |||
| * | |||
| * 小程序启动,或从后台进入前台显示时 | |||
| */ | |||
| onShow(options: LaunchShowOption): void | |||
| /** 生命周期回调—监听小程序隐藏 | |||
| * | |||
| * 小程序从前台进入后台时 | |||
| */ | |||
| onHide(): void | |||
| /** 错误监听函数 | |||
| * | |||
| * 小程序发生脚本错误,或者 api | |||
| */ | |||
| onError(/** 错误信息,包含堆栈 */ error: string): void | |||
| /** 页面不存在监听函数 | |||
| * | |||
| * 小程序要打开的页面不存在时触发,会带上页面信息回调该函数 | |||
| * | |||
| * **注意:** | |||
| * 1. 如果开发者没有添加 `onPageNotFound` 监听,当跳转页面不存在时,将推入微信客户端原生的页面不存在提示页面。 | |||
| * 2. 如果 `onPageNotFound` 回调中又重定向到另一个不存在的页面,将推入微信客户端原生的页面不存在提示页面,并且不再回调 `onPageNotFound`。 | |||
| * | |||
| * 最低基础库: 1.9.90 | |||
| */ | |||
| onPageNotFound(options: PageNotFoundOption): void | |||
| /** | |||
| * 小程序有未处理的 Promise 拒绝时触发。也可以使用 [wx.onUnhandledRejection](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onUnhandledRejection.html) 绑定监听。注意事项请参考 [wx.onUnhandledRejection](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onUnhandledRejection.html)。 | |||
| * **参数**:与 [wx.onUnhandledRejection](https://developers.weixin.qq.com/miniprogram/dev/api/base/app/app-event/wx.onUnhandledRejection.html) 一致 | |||
| */ | |||
| onUnhandledRejection: OnUnhandledRejectionCallback | |||
| /** | |||
| * 系统切换主题时触发。也可以使用 wx.onThemeChange 绑定监听。 | |||
| * | |||
| * 最低基础库: 2.11.0 | |||
| */ | |||
| onThemeChange: OnThemeChangeCallback | |||
| } | |||
| type Instance<T extends IAnyObject> = Option & T | |||
| type Options<T extends IAnyObject> = Partial<Option> & | |||
| T & | |||
| ThisType<Instance<T>> | |||
| type TrivialInstance = Instance<IAnyObject> | |||
| interface Constructor { | |||
| <T extends IAnyObject>(options: Options<T>): void | |||
| } | |||
| interface GetAppOption { | |||
| /** 在 `App` 未定义时返回默认实现。当App被调用时,默认实现中定义的属性会被覆盖合并到App中。一般用于独立分包 | |||
| * | |||
| * 最低基础库: 2.2.4 | |||
| */ | |||
| allowDefault?: boolean | |||
| } | |||
| interface GetApp { | |||
| <T extends IAnyObject = IAnyObject>(opts?: GetAppOption): Instance<T> | |||
| } | |||
| } | |||
| declare let App: WechatMiniprogram.App.Constructor | |||
| declare let getApp: WechatMiniprogram.App.GetApp | |||
| @@ -0,0 +1,68 @@ | |||
| /*! ***************************************************************************** | |||
| Copyright (c) 2023 Tencent, Inc. All rights reserved. | |||
| Permission is hereby granted, free of charge, to any person obtaining a copy of | |||
| this software and associated documentation files (the "Software"), to deal in | |||
| the Software without restriction, including without limitation the rights to | |||
| use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies | |||
| of the Software, and to permit persons to whom the Software is furnished to do | |||
| so, subject to the following conditions: | |||
| The above copyright notice and this permission notice shall be included in all | |||
| copies or substantial portions of the Software. | |||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||
| SOFTWARE. | |||
| ***************************************************************************** */ | |||
| declare namespace WechatMiniprogram.Behavior { | |||
| type BehaviorIdentifier = string | |||
| type Instance< | |||
| TData extends DataOption, | |||
| TProperty extends PropertyOption, | |||
| TMethod extends MethodOption, | |||
| TCustomInstanceProperty extends IAnyObject = Record<string, never> | |||
| > = Component.Instance<TData, TProperty, TMethod, TCustomInstanceProperty> | |||
| type TrivialInstance = Instance<IAnyObject, IAnyObject, IAnyObject> | |||
| type TrivialOption = Options<IAnyObject, IAnyObject, IAnyObject> | |||
| type Options< | |||
| TData extends DataOption, | |||
| TProperty extends PropertyOption, | |||
| TMethod extends MethodOption, | |||
| TCustomInstanceProperty extends IAnyObject = Record<string, never> | |||
| > = Partial<Data<TData>> & | |||
| Partial<Property<TProperty>> & | |||
| Partial<Method<TMethod>> & | |||
| Partial<OtherOption> & | |||
| Partial<Lifetimes> & | |||
| ThisType<Instance<TData, TProperty, TMethod, TCustomInstanceProperty>> | |||
| interface Constructor { | |||
| < | |||
| TData extends DataOption, | |||
| TProperty extends PropertyOption, | |||
| TMethod extends MethodOption, | |||
| TCustomInstanceProperty extends IAnyObject = Record<string, never> | |||
| >( | |||
| options: Options<TData, TProperty, TMethod, TCustomInstanceProperty> | |||
| ): BehaviorIdentifier | |||
| } | |||
| type DataOption = Component.DataOption | |||
| type PropertyOption = Component.PropertyOption | |||
| type MethodOption = Component.MethodOption | |||
| type Data<D extends DataOption> = Component.Data<D> | |||
| type Property<P extends PropertyOption> = Component.Property<P> | |||
| type Method<M extends MethodOption> = Component.Method<M> | |||
| type DefinitionFilter = Component.DefinitionFilter | |||
| type Lifetimes = Component.Lifetimes | |||
| type OtherOption = Omit<Component.OtherOption, 'options'> | |||
| } | |||
| /** 注册一个 `behavior`,接受一个 `Object` 类型的参数。*/ | |||
| declare let Behavior: WechatMiniprogram.Behavior.Constructor | |||
| @@ -0,0 +1,979 @@ | |||
| /*! ***************************************************************************** | |||
| Copyright (c) 2023 Tencent, Inc. All rights reserved. | |||
| Permission is hereby granted, free of charge, to any person obtaining a copy of | |||
| this software and associated documentation files (the "Software"), to deal in | |||
| the Software without restriction, including without limitation the rights to | |||
| use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies | |||
| of the Software, and to permit persons to whom the Software is furnished to do | |||
| so, subject to the following conditions: | |||
| The above copyright notice and this permission notice shall be included in all | |||
| copies or substantial portions of the Software. | |||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||
| SOFTWARE. | |||
| ***************************************************************************** */ | |||
| interface IAPIError { | |||
| errMsg: string | |||
| } | |||
| interface IAPIParam<T = any> { | |||
| config?: ICloudConfig | |||
| success?: (res: T) => void | |||
| fail?: (err: IAPIError) => void | |||
| complete?: (val: T | IAPIError) => void | |||
| } | |||
| interface IAPISuccessParam { | |||
| errMsg: string | |||
| } | |||
| type IAPICompleteParam = IAPISuccessParam | IAPIError | |||
| type IAPIFunction<T, P extends IAPIParam<T>> = (param?: P) => Promise<T> | |||
| interface IInitCloudConfig { | |||
| env?: | |||
| | string | |||
| | { | |||
| database?: string | |||
| functions?: string | |||
| storage?: string | |||
| } | |||
| traceUser?: boolean | |||
| } | |||
| interface ICloudConfig { | |||
| env?: string | |||
| traceUser?: boolean | |||
| } | |||
| interface IICloudAPI { | |||
| init: (config?: IInitCloudConfig) => void | |||
| [api: string]: AnyFunction | IAPIFunction<any, any> | |||
| } | |||
| interface ICloudService { | |||
| name: string | |||
| getAPIs: () => { [name: string]: IAPIFunction<any, any> } | |||
| } | |||
| interface ICloudServices { | |||
| [serviceName: string]: ICloudService | |||
| } | |||
| interface ICloudMetaData { | |||
| session_id: string | |||
| } | |||
| declare class InternalSymbol {} | |||
| interface AnyObject { | |||
| [x: string]: any | |||
| } | |||
| type AnyArray = any[] | |||
| type AnyFunction = (...args: any[]) => any | |||
| /** | |||
| * extend wx with cloud | |||
| */ | |||
| interface WxCloud { | |||
| init: (config?: ICloudConfig) => void | |||
| callFunction(param: OQ<ICloud.CallFunctionParam>): void | |||
| callFunction( | |||
| param: RQ<ICloud.CallFunctionParam> | |||
| ): Promise<ICloud.CallFunctionResult> | |||
| uploadFile(param: OQ<ICloud.UploadFileParam>): WechatMiniprogram.UploadTask | |||
| uploadFile( | |||
| param: RQ<ICloud.UploadFileParam> | |||
| ): Promise<ICloud.UploadFileResult> | |||
| downloadFile( | |||
| param: OQ<ICloud.DownloadFileParam> | |||
| ): WechatMiniprogram.DownloadTask | |||
| downloadFile( | |||
| param: RQ<ICloud.DownloadFileParam> | |||
| ): Promise<ICloud.DownloadFileResult> | |||
| getTempFileURL(param: OQ<ICloud.GetTempFileURLParam>): void | |||
| getTempFileURL( | |||
| param: RQ<ICloud.GetTempFileURLParam> | |||
| ): Promise<ICloud.GetTempFileURLResult> | |||
| deleteFile(param: OQ<ICloud.DeleteFileParam>): void | |||
| deleteFile( | |||
| param: RQ<ICloud.DeleteFileParam> | |||
| ): Promise<ICloud.DeleteFileResult> | |||
| database: (config?: ICloudConfig) => DB.Database | |||
| CloudID: ICloud.ICloudIDConstructor | |||
| CDN: ICloud.ICDNConstructor | |||
| callContainer(param: OQ<ICloud.CallContainerParam>): void | |||
| callContainer( | |||
| param: RQ<ICloud.CallContainerParam> | |||
| ): Promise<ICloud.CallContainerResult> | |||
| connectContainer(param: OQ<ICloud.ConnectContainerParam>): void | |||
| connectContainer( | |||
| param: RQ<ICloud.ConnectContainerParam> | |||
| ): Promise<ICloud.ConnectContainerResult> | |||
| } | |||
| declare namespace ICloud { | |||
| interface ICloudAPIParam<T = any> extends IAPIParam<T> { | |||
| config?: ICloudConfig | |||
| } | |||
| // === API: callFunction === | |||
| type CallFunctionData = AnyObject | |||
| interface CallFunctionResult extends IAPISuccessParam { | |||
| result: AnyObject | string | undefined | |||
| } | |||
| interface CallFunctionParam extends ICloudAPIParam<CallFunctionResult> { | |||
| name: string | |||
| data?: CallFunctionData | |||
| slow?: boolean | |||
| } | |||
| // === end === | |||
| // === API: container === | |||
| type CallContainerData = AnyObject | |||
| interface CallContainerResult extends IAPISuccessParam { | |||
| data: any | |||
| statusCode: number | |||
| header: Record<string, any> | |||
| callID: string | |||
| } | |||
| interface CallContainerParam extends ICloudAPIParam<CallContainerResult> { | |||
| path: string | |||
| service?: string | |||
| method?: string | |||
| header?: Record<string, any> | |||
| data?: any // string, object, ArrayBuffer | |||
| dataType?: string | |||
| responseType?: string | |||
| timeout?: number | |||
| verbose?: boolean | |||
| followRedirect?: boolean | |||
| } | |||
| interface ConnectContainerResult extends IAPISuccessParam { | |||
| socketTask: WechatMiniprogram.SocketTask | |||
| } | |||
| interface ConnectSocketOptions extends IAPIParam<void> { | |||
| header?: Record<string, string> | |||
| protocols?: string[] | |||
| tcpNoDelay?: boolean | |||
| perMessageDeflate?: boolean | |||
| timeout?: number | |||
| } | |||
| type ConnectContainerParam = Omit< | |||
| ConnectSocketOptions, | |||
| 'success' | 'fail' | 'complete' | |||
| > & | |||
| ICloudAPIParam<ConnectContainerResult> & { | |||
| service: string | |||
| path?: string | |||
| } | |||
| // === end === | |||
| // === API: uploadFile === | |||
| interface UploadFileResult extends IAPISuccessParam { | |||
| fileID: string | |||
| statusCode: number | |||
| } | |||
| interface UploadFileParam extends ICloudAPIParam<UploadFileResult> { | |||
| cloudPath: string | |||
| filePath: string | |||
| header?: AnyObject | |||
| } | |||
| // === end === | |||
| // === API: downloadFile === | |||
| interface DownloadFileResult extends IAPISuccessParam { | |||
| tempFilePath: string | |||
| statusCode: number | |||
| } | |||
| interface DownloadFileParam extends ICloudAPIParam<DownloadFileResult> { | |||
| fileID: string | |||
| cloudPath?: string | |||
| } | |||
| // === end === | |||
| // === API: getTempFileURL === | |||
| interface GetTempFileURLResult extends IAPISuccessParam { | |||
| fileList: GetTempFileURLResultItem[] | |||
| } | |||
| interface GetTempFileURLResultItem { | |||
| fileID: string | |||
| tempFileURL: string | |||
| maxAge: number | |||
| status: number | |||
| errMsg: string | |||
| } | |||
| interface GetTempFileURLParam extends ICloudAPIParam<GetTempFileURLResult> { | |||
| fileList: string[] | |||
| } | |||
| // === end === | |||
| // === API: deleteFile === | |||
| interface DeleteFileResult extends IAPISuccessParam { | |||
| fileList: DeleteFileResultItem[] | |||
| } | |||
| interface DeleteFileResultItem { | |||
| fileID: string | |||
| status: number | |||
| errMsg: string | |||
| } | |||
| interface DeleteFileParam extends ICloudAPIParam<DeleteFileResult> { | |||
| fileList: string[] | |||
| } | |||
| // === end === | |||
| // === API: CloudID === | |||
| abstract class CloudID { | |||
| constructor(cloudID: string) | |||
| } | |||
| interface ICloudIDConstructor { | |||
| new (cloudId: string): CloudID | |||
| (cloudId: string): CloudID | |||
| } | |||
| // === end === | |||
| // === API: CDN === | |||
| abstract class CDN { | |||
| target: string | ArrayBuffer | ICDNFilePathSpec | |||
| constructor(target: string | ArrayBuffer | ICDNFilePathSpec) | |||
| } | |||
| interface ICDNFilePathSpec { | |||
| type: 'filePath' | |||
| filePath: string | |||
| } | |||
| interface ICDNConstructor { | |||
| new (options: string | ArrayBuffer | ICDNFilePathSpec): CDN | |||
| (options: string | ArrayBuffer | ICDNFilePathSpec): CDN | |||
| } | |||
| // === end === | |||
| } | |||
| // === Database === | |||
| declare namespace DB { | |||
| /** | |||
| * The class of all exposed cloud database instances | |||
| */ | |||
| class Database { | |||
| readonly config: ICloudConfig | |||
| readonly command: DatabaseCommand | |||
| readonly Geo: IGeo | |||
| readonly serverDate: () => ServerDate | |||
| readonly RegExp: IRegExpConstructor | |||
| private constructor() | |||
| collection(collectionName: string): CollectionReference | |||
| } | |||
| class CollectionReference extends Query { | |||
| readonly collectionName: string | |||
| private constructor(name: string, database: Database) | |||
| doc(docId: string | number): DocumentReference | |||
| add(options: OQ<IAddDocumentOptions>): void | |||
| add(options: RQ<IAddDocumentOptions>): Promise<IAddResult> | |||
| } | |||
| class DocumentReference { | |||
| private constructor(docId: string | number, database: Database) | |||
| field(object: Record<string, any>): this | |||
| get(options: OQ<IGetDocumentOptions>): void | |||
| get(options?: RQ<IGetDocumentOptions>): Promise<IQuerySingleResult> | |||
| set(options: OQ<ISetSingleDocumentOptions>): void | |||
| set(options?: RQ<ISetSingleDocumentOptions>): Promise<ISetResult> | |||
| update(options: OQ<IUpdateSingleDocumentOptions>): void | |||
| update( | |||
| options?: RQ<IUpdateSingleDocumentOptions> | |||
| ): Promise<IUpdateResult> | |||
| remove(options: OQ<IRemoveSingleDocumentOptions>): void | |||
| remove( | |||
| options?: RQ<IRemoveSingleDocumentOptions> | |||
| ): Promise<IRemoveResult> | |||
| watch(options: IWatchOptions): RealtimeListener | |||
| } | |||
| class RealtimeListener { | |||
| // "And Now His Watch Is Ended" | |||
| close: () => Promise<void> | |||
| } | |||
| class Query { | |||
| where(condition: IQueryCondition): Query | |||
| orderBy(fieldPath: string, order: string): Query | |||
| limit(max: number): Query | |||
| skip(offset: number): Query | |||
| field(object: Record<string, any>): Query | |||
| get(options: OQ<IGetDocumentOptions>): void | |||
| get(options?: RQ<IGetDocumentOptions>): Promise<IQueryResult> | |||
| count(options: OQ<ICountDocumentOptions>): void | |||
| count(options?: RQ<ICountDocumentOptions>): Promise<ICountResult> | |||
| watch(options: IWatchOptions): RealtimeListener | |||
| } | |||
| interface DatabaseCommand { | |||
| eq(val: any): DatabaseQueryCommand | |||
| neq(val: any): DatabaseQueryCommand | |||
| gt(val: any): DatabaseQueryCommand | |||
| gte(val: any): DatabaseQueryCommand | |||
| lt(val: any): DatabaseQueryCommand | |||
| lte(val: any): DatabaseQueryCommand | |||
| in(val: any[]): DatabaseQueryCommand | |||
| nin(val: any[]): DatabaseQueryCommand | |||
| geoNear(options: IGeoNearCommandOptions): DatabaseQueryCommand | |||
| geoWithin(options: IGeoWithinCommandOptions): DatabaseQueryCommand | |||
| geoIntersects( | |||
| options: IGeoIntersectsCommandOptions | |||
| ): DatabaseQueryCommand | |||
| and( | |||
| ...expressions: Array<DatabaseLogicCommand | IQueryCondition> | |||
| ): DatabaseLogicCommand | |||
| or( | |||
| ...expressions: Array<DatabaseLogicCommand | IQueryCondition> | |||
| ): DatabaseLogicCommand | |||
| nor( | |||
| ...expressions: Array<DatabaseLogicCommand | IQueryCondition> | |||
| ): DatabaseLogicCommand | |||
| not(expression: DatabaseLogicCommand): DatabaseLogicCommand | |||
| exists(val: boolean): DatabaseQueryCommand | |||
| mod(divisor: number, remainder: number): DatabaseQueryCommand | |||
| all(val: any[]): DatabaseQueryCommand | |||
| elemMatch(val: any): DatabaseQueryCommand | |||
| size(val: number): DatabaseQueryCommand | |||
| set(val: any): DatabaseUpdateCommand | |||
| remove(): DatabaseUpdateCommand | |||
| inc(val: number): DatabaseUpdateCommand | |||
| mul(val: number): DatabaseUpdateCommand | |||
| min(val: number): DatabaseUpdateCommand | |||
| max(val: number): DatabaseUpdateCommand | |||
| rename(val: string): DatabaseUpdateCommand | |||
| bit(val: number): DatabaseUpdateCommand | |||
| push(...values: any[]): DatabaseUpdateCommand | |||
| pop(): DatabaseUpdateCommand | |||
| shift(): DatabaseUpdateCommand | |||
| unshift(...values: any[]): DatabaseUpdateCommand | |||
| addToSet(val: any): DatabaseUpdateCommand | |||
| pull(val: any): DatabaseUpdateCommand | |||
| pullAll(val: any): DatabaseUpdateCommand | |||
| project: { | |||
| slice(val: number | [number, number]): DatabaseProjectionCommand | |||
| } | |||
| aggregate: { | |||
| __safe_props__?: Set<string> | |||
| abs(val: any): DatabaseAggregateCommand | |||
| add(val: any): DatabaseAggregateCommand | |||
| addToSet(val: any): DatabaseAggregateCommand | |||
| allElementsTrue(val: any): DatabaseAggregateCommand | |||
| and(val: any): DatabaseAggregateCommand | |||
| anyElementTrue(val: any): DatabaseAggregateCommand | |||
| arrayElemAt(val: any): DatabaseAggregateCommand | |||
| arrayToObject(val: any): DatabaseAggregateCommand | |||
| avg(val: any): DatabaseAggregateCommand | |||
| ceil(val: any): DatabaseAggregateCommand | |||
| cmp(val: any): DatabaseAggregateCommand | |||
| concat(val: any): DatabaseAggregateCommand | |||
| concatArrays(val: any): DatabaseAggregateCommand | |||
| cond(val: any): DatabaseAggregateCommand | |||
| convert(val: any): DatabaseAggregateCommand | |||
| dateFromParts(val: any): DatabaseAggregateCommand | |||
| dateToParts(val: any): DatabaseAggregateCommand | |||
| dateFromString(val: any): DatabaseAggregateCommand | |||
| dateToString(val: any): DatabaseAggregateCommand | |||
| dayOfMonth(val: any): DatabaseAggregateCommand | |||
| dayOfWeek(val: any): DatabaseAggregateCommand | |||
| dayOfYear(val: any): DatabaseAggregateCommand | |||
| divide(val: any): DatabaseAggregateCommand | |||
| eq(val: any): DatabaseAggregateCommand | |||
| exp(val: any): DatabaseAggregateCommand | |||
| filter(val: any): DatabaseAggregateCommand | |||
| first(val: any): DatabaseAggregateCommand | |||
| floor(val: any): DatabaseAggregateCommand | |||
| gt(val: any): DatabaseAggregateCommand | |||
| gte(val: any): DatabaseAggregateCommand | |||
| hour(val: any): DatabaseAggregateCommand | |||
| ifNull(val: any): DatabaseAggregateCommand | |||
| in(val: any): DatabaseAggregateCommand | |||
| indexOfArray(val: any): DatabaseAggregateCommand | |||
| indexOfBytes(val: any): DatabaseAggregateCommand | |||
| indexOfCP(val: any): DatabaseAggregateCommand | |||
| isArray(val: any): DatabaseAggregateCommand | |||
| isoDayOfWeek(val: any): DatabaseAggregateCommand | |||
| isoWeek(val: any): DatabaseAggregateCommand | |||
| isoWeekYear(val: any): DatabaseAggregateCommand | |||
| last(val: any): DatabaseAggregateCommand | |||
| let(val: any): DatabaseAggregateCommand | |||
| literal(val: any): DatabaseAggregateCommand | |||
| ln(val: any): DatabaseAggregateCommand | |||
| log(val: any): DatabaseAggregateCommand | |||
| log10(val: any): DatabaseAggregateCommand | |||
| lt(val: any): DatabaseAggregateCommand | |||
| lte(val: any): DatabaseAggregateCommand | |||
| ltrim(val: any): DatabaseAggregateCommand | |||
| map(val: any): DatabaseAggregateCommand | |||
| max(val: any): DatabaseAggregateCommand | |||
| mergeObjects(val: any): DatabaseAggregateCommand | |||
| meta(val: any): DatabaseAggregateCommand | |||
| min(val: any): DatabaseAggregateCommand | |||
| millisecond(val: any): DatabaseAggregateCommand | |||
| minute(val: any): DatabaseAggregateCommand | |||
| mod(val: any): DatabaseAggregateCommand | |||
| month(val: any): DatabaseAggregateCommand | |||
| multiply(val: any): DatabaseAggregateCommand | |||
| neq(val: any): DatabaseAggregateCommand | |||
| not(val: any): DatabaseAggregateCommand | |||
| objectToArray(val: any): DatabaseAggregateCommand | |||
| or(val: any): DatabaseAggregateCommand | |||
| pow(val: any): DatabaseAggregateCommand | |||
| push(val: any): DatabaseAggregateCommand | |||
| range(val: any): DatabaseAggregateCommand | |||
| reduce(val: any): DatabaseAggregateCommand | |||
| reverseArray(val: any): DatabaseAggregateCommand | |||
| rtrim(val: any): DatabaseAggregateCommand | |||
| second(val: any): DatabaseAggregateCommand | |||
| setDifference(val: any): DatabaseAggregateCommand | |||
| setEquals(val: any): DatabaseAggregateCommand | |||
| setIntersection(val: any): DatabaseAggregateCommand | |||
| setIsSubset(val: any): DatabaseAggregateCommand | |||
| setUnion(val: any): DatabaseAggregateCommand | |||
| size(val: any): DatabaseAggregateCommand | |||
| slice(val: any): DatabaseAggregateCommand | |||
| split(val: any): DatabaseAggregateCommand | |||
| sqrt(val: any): DatabaseAggregateCommand | |||
| stdDevPop(val: any): DatabaseAggregateCommand | |||
| stdDevSamp(val: any): DatabaseAggregateCommand | |||
| strcasecmp(val: any): DatabaseAggregateCommand | |||
| strLenBytes(val: any): DatabaseAggregateCommand | |||
| strLenCP(val: any): DatabaseAggregateCommand | |||
| substr(val: any): DatabaseAggregateCommand | |||
| substrBytes(val: any): DatabaseAggregateCommand | |||
| substrCP(val: any): DatabaseAggregateCommand | |||
| subtract(val: any): DatabaseAggregateCommand | |||
| sum(val: any): DatabaseAggregateCommand | |||
| switch(val: any): DatabaseAggregateCommand | |||
| toBool(val: any): DatabaseAggregateCommand | |||
| toDate(val: any): DatabaseAggregateCommand | |||
| toDecimal(val: any): DatabaseAggregateCommand | |||
| toDouble(val: any): DatabaseAggregateCommand | |||
| toInt(val: any): DatabaseAggregateCommand | |||
| toLong(val: any): DatabaseAggregateCommand | |||
| toObjectId(val: any): DatabaseAggregateCommand | |||
| toString(val: any): DatabaseAggregateCommand | |||
| toLower(val: any): DatabaseAggregateCommand | |||
| toUpper(val: any): DatabaseAggregateCommand | |||
| trim(val: any): DatabaseAggregateCommand | |||
| trunc(val: any): DatabaseAggregateCommand | |||
| type(val: any): DatabaseAggregateCommand | |||
| week(val: any): DatabaseAggregateCommand | |||
| year(val: any): DatabaseAggregateCommand | |||
| zip(val: any): DatabaseAggregateCommand | |||
| } | |||
| } | |||
| class DatabaseAggregateCommand {} | |||
| enum LOGIC_COMMANDS_LITERAL { | |||
| AND = 'and', | |||
| OR = 'or', | |||
| NOT = 'not', | |||
| NOR = 'nor' | |||
| } | |||
| class DatabaseLogicCommand { | |||
| and(...expressions: DatabaseLogicCommand[]): DatabaseLogicCommand | |||
| or(...expressions: DatabaseLogicCommand[]): DatabaseLogicCommand | |||
| nor(...expressions: DatabaseLogicCommand[]): DatabaseLogicCommand | |||
| not(expression: DatabaseLogicCommand): DatabaseLogicCommand | |||
| } | |||
| enum QUERY_COMMANDS_LITERAL { | |||
| // comparison | |||
| EQ = 'eq', | |||
| NEQ = 'neq', | |||
| GT = 'gt', | |||
| GTE = 'gte', | |||
| LT = 'lt', | |||
| LTE = 'lte', | |||
| IN = 'in', | |||
| NIN = 'nin', | |||
| // geo | |||
| GEO_NEAR = 'geoNear', | |||
| GEO_WITHIN = 'geoWithin', | |||
| GEO_INTERSECTS = 'geoIntersects', | |||
| // element | |||
| EXISTS = 'exists', | |||
| // evaluation | |||
| MOD = 'mod', | |||
| // array | |||
| ALL = 'all', | |||
| ELEM_MATCH = 'elemMatch', | |||
| SIZE = 'size' | |||
| } | |||
| class DatabaseQueryCommand extends DatabaseLogicCommand { | |||
| eq(val: any): DatabaseLogicCommand | |||
| neq(val: any): DatabaseLogicCommand | |||
| gt(val: any): DatabaseLogicCommand | |||
| gte(val: any): DatabaseLogicCommand | |||
| lt(val: any): DatabaseLogicCommand | |||
| lte(val: any): DatabaseLogicCommand | |||
| in(val: any[]): DatabaseLogicCommand | |||
| nin(val: any[]): DatabaseLogicCommand | |||
| exists(val: boolean): DatabaseLogicCommand | |||
| mod(divisor: number, remainder: number): DatabaseLogicCommand | |||
| all(val: any[]): DatabaseLogicCommand | |||
| elemMatch(val: any): DatabaseLogicCommand | |||
| size(val: number): DatabaseLogicCommand | |||
| geoNear(options: IGeoNearCommandOptions): DatabaseLogicCommand | |||
| geoWithin(options: IGeoWithinCommandOptions): DatabaseLogicCommand | |||
| geoIntersects( | |||
| options: IGeoIntersectsCommandOptions | |||
| ): DatabaseLogicCommand | |||
| } | |||
| enum PROJECTION_COMMANDS_LITERAL { | |||
| SLICE = 'slice' | |||
| } | |||
| class DatabaseProjectionCommand {} | |||
| enum UPDATE_COMMANDS_LITERAL { | |||
| // field | |||
| SET = 'set', | |||
| REMOVE = 'remove', | |||
| INC = 'inc', | |||
| MUL = 'mul', | |||
| MIN = 'min', | |||
| MAX = 'max', | |||
| RENAME = 'rename', | |||
| // bitwise | |||
| BIT = 'bit', | |||
| // array | |||
| PUSH = 'push', | |||
| POP = 'pop', | |||
| SHIFT = 'shift', | |||
| UNSHIFT = 'unshift', | |||
| ADD_TO_SET = 'addToSet', | |||
| PULL = 'pull', | |||
| PULL_ALL = 'pullAll' | |||
| } | |||
| class DatabaseUpdateCommand {} | |||
| class Batch {} | |||
| /** | |||
| * A contract that all API provider must adhere to | |||
| */ | |||
| class APIBaseContract< | |||
| PromiseReturn, | |||
| CallbackReturn, | |||
| Param extends IAPIParam, | |||
| Context = any | |||
| > { | |||
| getContext(param: Param): Context | |||
| /** | |||
| * In case of callback-style invocation, this function will be called | |||
| */ | |||
| getCallbackReturn(param: Param, context: Context): CallbackReturn | |||
| getFinalParam<T extends Param>(param: Param, context: Context): T | |||
| run<T extends Param>(param: T): Promise<PromiseReturn> | |||
| } | |||
| interface IGeoPointConstructor { | |||
| new (longitude: number, latitide: number): GeoPoint | |||
| new (geojson: IGeoJSONPoint): GeoPoint | |||
| (longitude: number, latitide: number): GeoPoint | |||
| (geojson: IGeoJSONPoint): GeoPoint | |||
| } | |||
| interface IGeoMultiPointConstructor { | |||
| new (points: GeoPoint[] | IGeoJSONMultiPoint): GeoMultiPoint | |||
| (points: GeoPoint[] | IGeoJSONMultiPoint): GeoMultiPoint | |||
| } | |||
| interface IGeoLineStringConstructor { | |||
| new (points: GeoPoint[] | IGeoJSONLineString): GeoLineString | |||
| (points: GeoPoint[] | IGeoJSONLineString): GeoLineString | |||
| } | |||
| interface IGeoMultiLineStringConstructor { | |||
| new ( | |||
| lineStrings: GeoLineString[] | IGeoJSONMultiLineString | |||
| ): GeoMultiLineString | |||
| ( | |||
| lineStrings: GeoLineString[] | IGeoJSONMultiLineString | |||
| ): GeoMultiLineString | |||
| } | |||
| interface IGeoPolygonConstructor { | |||
| new (lineStrings: GeoLineString[] | IGeoJSONPolygon): GeoPolygon | |||
| (lineStrings: GeoLineString[] | IGeoJSONPolygon): GeoPolygon | |||
| } | |||
| interface IGeoMultiPolygonConstructor { | |||
| new (polygons: GeoPolygon[] | IGeoJSONMultiPolygon): GeoMultiPolygon | |||
| (polygons: GeoPolygon[] | IGeoJSONMultiPolygon): GeoMultiPolygon | |||
| } | |||
| interface IGeo { | |||
| Point: IGeoPointConstructor | |||
| MultiPoint: IGeoMultiPointConstructor | |||
| LineString: IGeoLineStringConstructor | |||
| MultiLineString: IGeoMultiLineStringConstructor | |||
| Polygon: IGeoPolygonConstructor | |||
| MultiPolygon: IGeoMultiPolygonConstructor | |||
| } | |||
| interface IGeoJSONPoint { | |||
| type: 'Point' | |||
| coordinates: [number, number] | |||
| } | |||
| interface IGeoJSONMultiPoint { | |||
| type: 'MultiPoint' | |||
| coordinates: Array<[number, number]> | |||
| } | |||
| interface IGeoJSONLineString { | |||
| type: 'LineString' | |||
| coordinates: Array<[number, number]> | |||
| } | |||
| interface IGeoJSONMultiLineString { | |||
| type: 'MultiLineString' | |||
| coordinates: Array<Array<[number, number]>> | |||
| } | |||
| interface IGeoJSONPolygon { | |||
| type: 'Polygon' | |||
| coordinates: Array<Array<[number, number]>> | |||
| } | |||
| interface IGeoJSONMultiPolygon { | |||
| type: 'MultiPolygon' | |||
| coordinates: Array<Array<Array<[number, number]>>> | |||
| } | |||
| type IGeoJSONObject = | |||
| | IGeoJSONPoint | |||
| | IGeoJSONMultiPoint | |||
| | IGeoJSONLineString | |||
| | IGeoJSONMultiLineString | |||
| | IGeoJSONPolygon | |||
| | IGeoJSONMultiPolygon | |||
| abstract class GeoPoint { | |||
| longitude: number | |||
| latitude: number | |||
| constructor(longitude: number, latitude: number) | |||
| toJSON(): Record<string, any> | |||
| toString(): string | |||
| } | |||
| abstract class GeoMultiPoint { | |||
| points: GeoPoint[] | |||
| constructor(points: GeoPoint[]) | |||
| toJSON(): IGeoJSONMultiPoint | |||
| toString(): string | |||
| } | |||
| abstract class GeoLineString { | |||
| points: GeoPoint[] | |||
| constructor(points: GeoPoint[]) | |||
| toJSON(): IGeoJSONLineString | |||
| toString(): string | |||
| } | |||
| abstract class GeoMultiLineString { | |||
| lines: GeoLineString[] | |||
| constructor(lines: GeoLineString[]) | |||
| toJSON(): IGeoJSONMultiLineString | |||
| toString(): string | |||
| } | |||
| abstract class GeoPolygon { | |||
| lines: GeoLineString[] | |||
| constructor(lines: GeoLineString[]) | |||
| toJSON(): IGeoJSONPolygon | |||
| toString(): string | |||
| } | |||
| abstract class GeoMultiPolygon { | |||
| polygons: GeoPolygon[] | |||
| constructor(polygons: GeoPolygon[]) | |||
| toJSON(): IGeoJSONMultiPolygon | |||
| toString(): string | |||
| } | |||
| type GeoInstance = | |||
| | GeoPoint | |||
| | GeoMultiPoint | |||
| | GeoLineString | |||
| | GeoMultiLineString | |||
| | GeoPolygon | |||
| | GeoMultiPolygon | |||
| interface IGeoNearCommandOptions { | |||
| geometry: GeoPoint | |||
| maxDistance?: number | |||
| minDistance?: number | |||
| } | |||
| interface IGeoWithinCommandOptions { | |||
| geometry: GeoPolygon | GeoMultiPolygon | |||
| } | |||
| interface IGeoIntersectsCommandOptions { | |||
| geometry: | |||
| | GeoPoint | |||
| | GeoMultiPoint | |||
| | GeoLineString | |||
| | GeoMultiLineString | |||
| | GeoPolygon | |||
| | GeoMultiPolygon | |||
| } | |||
| interface IServerDateOptions { | |||
| offset: number | |||
| } | |||
| abstract class ServerDate { | |||
| readonly options: IServerDateOptions | |||
| constructor(options?: IServerDateOptions) | |||
| } | |||
| interface IRegExpOptions { | |||
| regexp: string | |||
| options?: string | |||
| } | |||
| interface IRegExpConstructor { | |||
| new (options: IRegExpOptions): RegExp | |||
| (options: IRegExpOptions): RegExp | |||
| } | |||
| abstract class RegExp { | |||
| readonly regexp: string | |||
| readonly options: string | |||
| constructor(options: IRegExpOptions) | |||
| } | |||
| type DocumentId = string | number | |||
| interface IDocumentData { | |||
| _id?: DocumentId | |||
| [key: string]: any | |||
| } | |||
| type IDBAPIParam = IAPIParam | |||
| interface IAddDocumentOptions extends IDBAPIParam { | |||
| data: IDocumentData | |||
| } | |||
| type IGetDocumentOptions = IDBAPIParam | |||
| type ICountDocumentOptions = IDBAPIParam | |||
| interface IUpdateDocumentOptions extends IDBAPIParam { | |||
| data: IUpdateCondition | |||
| } | |||
| interface IUpdateSingleDocumentOptions extends IDBAPIParam { | |||
| data: IUpdateCondition | |||
| } | |||
| interface ISetDocumentOptions extends IDBAPIParam { | |||
| data: IUpdateCondition | |||
| } | |||
| interface ISetSingleDocumentOptions extends IDBAPIParam { | |||
| data: IUpdateCondition | |||
| } | |||
| interface IRemoveDocumentOptions extends IDBAPIParam { | |||
| query: IQueryCondition | |||
| } | |||
| type IRemoveSingleDocumentOptions = IDBAPIParam | |||
| interface IWatchOptions { | |||
| // server realtime data init & change event | |||
| onChange: (snapshot: ISnapshot) => void | |||
| // error while connecting / listening | |||
| onError: (error: any) => void | |||
| } | |||
| interface ISnapshot { | |||
| id: number | |||
| docChanges: ISingleDBEvent[] | |||
| docs: Record<string, any> | |||
| type?: SnapshotType | |||
| } | |||
| type SnapshotType = 'init' | |||
| interface ISingleDBEvent { | |||
| id: number | |||
| dataType: DataType | |||
| queueType: QueueType | |||
| docId: string | |||
| doc: Record<string, any> | |||
| updatedFields?: Record<string, any> | |||
| removedFields?: string[] | |||
| } | |||
| type DataType = 'init' | 'update' | 'replace' | 'add' | 'remove' | 'limit' | |||
| type QueueType = 'init' | 'enqueue' | 'dequeue' | 'update' | |||
| interface IQueryCondition { | |||
| [key: string]: any | |||
| } | |||
| type IStringQueryCondition = string | |||
| interface IQueryResult extends IAPISuccessParam { | |||
| data: IDocumentData[] | |||
| } | |||
| interface IQuerySingleResult extends IAPISuccessParam { | |||
| data: IDocumentData | |||
| } | |||
| interface IUpdateCondition { | |||
| [key: string]: any | |||
| } | |||
| type IStringUpdateCondition = string | |||
| interface IAddResult extends IAPISuccessParam { | |||
| _id: DocumentId | |||
| } | |||
| interface IUpdateResult extends IAPISuccessParam { | |||
| stats: { | |||
| updated: number | |||
| // created: number, | |||
| } | |||
| } | |||
| interface ISetResult extends IAPISuccessParam { | |||
| _id: DocumentId | |||
| stats: { | |||
| updated: number | |||
| created: number | |||
| } | |||
| } | |||
| interface IRemoveResult extends IAPISuccessParam { | |||
| stats: { | |||
| removed: number | |||
| } | |||
| } | |||
| interface ICountResult extends IAPISuccessParam { | |||
| total: number | |||
| } | |||
| } | |||
| type Optional<T> = { [K in keyof T]+?: T[K] } | |||
| type OQ< | |||
| T extends Optional< | |||
| Record<'complete' | 'success' | 'fail', (...args: any[]) => any> | |||
| > | |||
| > = | |||
| | (RQ<T> & Required<Pick<T, 'success'>>) | |||
| | (RQ<T> & Required<Pick<T, 'fail'>>) | |||
| | (RQ<T> & Required<Pick<T, 'complete'>>) | |||
| | (RQ<T> & Required<Pick<T, 'success' | 'fail'>>) | |||
| | (RQ<T> & Required<Pick<T, 'success' | 'complete'>>) | |||
| | (RQ<T> & Required<Pick<T, 'fail' | 'complete'>>) | |||
| | (RQ<T> & Required<Pick<T, 'fail' | 'complete' | 'success'>>) | |||
| type RQ< | |||
| T extends Optional< | |||
| Record<'complete' | 'success' | 'fail', (...args: any[]) => any> | |||
| > | |||
| > = Pick<T, Exclude<keyof T, 'complete' | 'success' | 'fail'>> | |||
| @@ -0,0 +1,676 @@ | |||
| /*! ***************************************************************************** | |||
| Copyright (c) 2023 Tencent, Inc. All rights reserved. | |||
| Permission is hereby granted, free of charge, to any person obtaining a copy of | |||
| this software and associated documentation files (the "Software"), to deal in | |||
| the Software without restriction, including without limitation the rights to | |||
| use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies | |||
| of the Software, and to permit persons to whom the Software is furnished to do | |||
| so, subject to the following conditions: | |||
| The above copyright notice and this permission notice shall be included in all | |||
| copies or substantial portions of the Software. | |||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||
| SOFTWARE. | |||
| ***************************************************************************** */ | |||
| declare namespace WechatMiniprogram.Component { | |||
| type Instance< | |||
| TData extends DataOption, | |||
| TProperty extends PropertyOption, | |||
| TMethod extends Partial<MethodOption>, | |||
| TCustomInstanceProperty extends IAnyObject = {}, | |||
| TIsPage extends boolean = false | |||
| > = InstanceProperties & | |||
| InstanceMethods<TData> & | |||
| TMethod & | |||
| (TIsPage extends true ? Page.ILifetime : {}) & | |||
| TCustomInstanceProperty & { | |||
| /** 组件数据,**包括内部数据和属性值** */ | |||
| data: TData & PropertyOptionToData<TProperty> | |||
| /** 组件数据,**包括内部数据和属性值**(与 `data` 一致) */ | |||
| properties: TData & PropertyOptionToData<TProperty> | |||
| } | |||
| type TrivialInstance = Instance< | |||
| IAnyObject, | |||
| IAnyObject, | |||
| IAnyObject, | |||
| IAnyObject | |||
| > | |||
| type TrivialOption = Options<IAnyObject, IAnyObject, IAnyObject, IAnyObject> | |||
| type Options< | |||
| TData extends DataOption, | |||
| TProperty extends PropertyOption, | |||
| TMethod extends MethodOption, | |||
| TCustomInstanceProperty extends IAnyObject = {}, | |||
| TIsPage extends boolean = false | |||
| > = Partial<Data<TData>> & | |||
| Partial<Property<TProperty>> & | |||
| Partial<Method<TMethod, TIsPage>> & | |||
| Partial<OtherOption> & | |||
| Partial<Lifetimes> & | |||
| ThisType< | |||
| Instance< | |||
| TData, | |||
| TProperty, | |||
| TMethod, | |||
| TCustomInstanceProperty, | |||
| TIsPage | |||
| > | |||
| > | |||
| interface Constructor { | |||
| < | |||
| TData extends DataOption, | |||
| TProperty extends PropertyOption, | |||
| TMethod extends MethodOption, | |||
| TCustomInstanceProperty extends IAnyObject = {}, | |||
| TIsPage extends boolean = false | |||
| >( | |||
| options: Options< | |||
| TData, | |||
| TProperty, | |||
| TMethod, | |||
| TCustomInstanceProperty, | |||
| TIsPage | |||
| > | |||
| ): string | |||
| } | |||
| type DataOption = Record<string, any> | |||
| type PropertyOption = Record<string, AllProperty> | |||
| type MethodOption = Record<string, Function> | |||
| interface Data<D extends DataOption> { | |||
| /** 组件的内部数据,和 `properties` 一同用于组件的模板渲染 */ | |||
| data?: D | |||
| } | |||
| interface Property<P extends PropertyOption> { | |||
| /** 组件的对外属性,是属性名到属性设置的映射表 */ | |||
| properties: P | |||
| } | |||
| interface Method<M extends MethodOption, TIsPage extends boolean = false> { | |||
| /** 组件的方法,包括事件响应函数和任意的自定义方法,关于事件响应函数的使用,参见 [组件间通信与事件](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/events.html) */ | |||
| methods: M & (TIsPage extends true ? Partial<Page.ILifetime> : {}) | |||
| } | |||
| type PropertyType = | |||
| | StringConstructor | |||
| | NumberConstructor | |||
| | BooleanConstructor | |||
| | ArrayConstructor | |||
| | ObjectConstructor | |||
| | null | |||
| type ValueType<T extends PropertyType> = T extends null | |||
| ? any | |||
| : T extends StringConstructor | |||
| ? string | |||
| : T extends NumberConstructor | |||
| ? number | |||
| : T extends BooleanConstructor | |||
| ? boolean | |||
| : T extends ArrayConstructor | |||
| ? any[] | |||
| : T extends ObjectConstructor | |||
| ? IAnyObject | |||
| : never | |||
| type FullProperty<T extends PropertyType> = { | |||
| /** 属性类型 */ | |||
| type: T | |||
| /** 属性初始值 */ | |||
| value?: ValueType<T> | |||
| /** 属性值被更改时的响应函数 */ | |||
| observer?: | |||
| | string | |||
| | (( | |||
| newVal: ValueType<T>, | |||
| oldVal: ValueType<T>, | |||
| changedPath: Array<string | number> | |||
| ) => void) | |||
| /** 属性的类型(可以指定多个) */ | |||
| optionalTypes?: ShortProperty[] | |||
| } | |||
| type AllFullProperty = | |||
| | FullProperty<StringConstructor> | |||
| | FullProperty<NumberConstructor> | |||
| | FullProperty<BooleanConstructor> | |||
| | FullProperty<ArrayConstructor> | |||
| | FullProperty<ObjectConstructor> | |||
| | FullProperty<null> | |||
| type ShortProperty = | |||
| | StringConstructor | |||
| | NumberConstructor | |||
| | BooleanConstructor | |||
| | ArrayConstructor | |||
| | ObjectConstructor | |||
| | null | |||
| type AllProperty = AllFullProperty | ShortProperty | |||
| type PropertyToData<T extends AllProperty> = T extends ShortProperty | |||
| ? ValueType<T> | |||
| : FullPropertyToData<Exclude<T, ShortProperty>> | |||
| type FullPropertyToData<T extends AllFullProperty> = ValueType<T['type']> | |||
| // type FullPropertyToData<T extends AllFullProperty> = unknown extends T['value'] ? ValueType<T['type']> : T['value'] | |||
| type PropertyOptionToData<P extends PropertyOption> = { | |||
| [name in keyof P]: PropertyToData<P[name]> | |||
| } | |||
| interface InstanceProperties { | |||
| /** 组件的文件路径 */ | |||
| is: string | |||
| /** 节点id */ | |||
| id: string | |||
| /** 节点dataset */ | |||
| dataset: Record<string, string> | |||
| } | |||
| interface InstanceMethods<D extends DataOption> { | |||
| /** `setData` 函数用于将数据从逻辑层发送到视图层 | |||
| *(异步),同时改变对应的 `this.data` 的值(同步)。 | |||
| * | |||
| * **注意:** | |||
| * | |||
| * 1. **直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致**。 | |||
| * 1. 仅支持设置可 JSON 化的数据。 | |||
| * 1. 单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。 | |||
| * 1. 请不要把 data 中任何一项的 value 设为 `undefined` ,否则这一项将不被设置并可能遗留一些潜在问题。 | |||
| */ | |||
| setData( | |||
| /** 这次要改变的数据 | |||
| * | |||
| * 以 `key: value` 的形式表示,将 `this.data` 中的 `key` 对应的值改变成 `value`。 | |||
| * | |||
| * 其中 `key` 可以以数据路径的形式给出,支持改变数组中的某一项或对象的某个属性,如 `array[2].message`,`a.b.c.d`,并且不需要在 this.data 中预先定义。 | |||
| */ | |||
| data: Partial<D> & IAnyObject, | |||
| /** setData引起的界面更新渲染完毕后的回调函数,最低基础库: `1.5.0` */ | |||
| callback?: () => void | |||
| ): void | |||
| /** 检查组件是否具有 `behavior` (检查时会递归检查被直接或间接引入的所有behavior) */ | |||
| hasBehavior(behavior: Behavior.BehaviorIdentifier): void | |||
| /** 触发事件,参见组件事件 */ | |||
| triggerEvent<DetailType = any>( | |||
| name: string, | |||
| detail?: DetailType, | |||
| options?: TriggerEventOption | |||
| ): void | |||
| /** 创建一个 SelectorQuery 对象,选择器选取范围为这个组件实例内 */ | |||
| createSelectorQuery(): SelectorQuery | |||
| /** 创建一个 IntersectionObserver 对象,选择器选取范围为这个组件实例内 */ | |||
| createIntersectionObserver( | |||
| options: CreateIntersectionObserverOption | |||
| ): IntersectionObserver | |||
| /** 使用选择器选择组件实例节点,返回匹配到的第一个组件实例对象(会被 `wx://component-export` 影响) */ | |||
| selectComponent(selector: string): TrivialInstance | |||
| /** 使用选择器选择组件实例节点,返回匹配到的全部组件实例对象组成的数组 */ | |||
| selectAllComponents(selector: string): TrivialInstance[] | |||
| /** | |||
| * 选取当前组件节点所在的组件实例(即组件的引用者),返回它的组件实例对象(会被 `wx://component-export` 影响) | |||
| * | |||
| * 最低基础库版本:[`2.8.2`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| **/ | |||
| selectOwnerComponent(): TrivialInstance | |||
| /** 获取这个关系所对应的所有关联节点,参见 组件间关系 */ | |||
| getRelationNodes(relationKey: string): TrivialInstance[] | |||
| /** | |||
| * 立刻执行 callback ,其中的多个 setData 之间不会触发界面绘制(只有某些特殊场景中需要,如用于在不同组件同时 setData 时进行界面绘制同步) | |||
| * | |||
| * 最低基础库版本:[`2.4.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| **/ | |||
| groupSetData(callback?: () => void): void | |||
| /** | |||
| * 返回当前页面的 custom-tab-bar 的组件实例 | |||
| * | |||
| * 最低基础库版本:[`2.6.2`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| **/ | |||
| getTabBar(): TrivialInstance | |||
| /** | |||
| * 返回页面标识符(一个字符串),可以用来判断几个自定义组件实例是不是在同一个页面内 | |||
| * | |||
| * 最低基础库版本:[`2.7.1`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| **/ | |||
| getPageId(): string | |||
| /** | |||
| * 执行关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) | |||
| * | |||
| * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| **/ | |||
| animate( | |||
| selector: string, | |||
| keyFrames: KeyFrame[], | |||
| duration: number, | |||
| callback?: () => void | |||
| ): void | |||
| /** | |||
| * 执行关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) | |||
| * | |||
| * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| **/ | |||
| animate( | |||
| selector: string, | |||
| keyFrames: ScrollTimelineKeyframe[], | |||
| duration: number, | |||
| scrollTimeline: ScrollTimelineOption | |||
| ): void | |||
| /** | |||
| * 清除关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) | |||
| * | |||
| * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| **/ | |||
| clearAnimation(selector: string, callback: () => void): void | |||
| /** | |||
| * 清除关键帧动画,详见[动画](https://developers.weixin.qq.com/miniprogram/dev/framework/view/animation.html) | |||
| * | |||
| * 最低基础库版本:[`2.9.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| **/ | |||
| clearAnimation( | |||
| selector: string, | |||
| options?: ClearAnimationOptions, | |||
| callback?: () => void | |||
| ): void | |||
| /** | |||
| * 当从另一页面跳转到该页面时,获得与来源页面实例通信当事件通道,详见 [wx.navigateTo]((wx.navigateTo)) | |||
| * | |||
| * 最低基础库版本:[`2.7.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| */ | |||
| getOpenerEventChannel(): EventChannel | |||
| /** | |||
| * 获取更新性能统计信息,详见 [获取更新性能统计信息]((custom-component/update-perf-stat)) | |||
| * | |||
| * | |||
| * 最低基础库版本:[`2.12.0`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| */ | |||
| setUpdatePerformanceListener<WithDataPath extends boolean = false>( | |||
| options: SetUpdatePerformanceListenerOption<WithDataPath>, | |||
| callback?: UpdatePerformanceListener<WithDataPath> | |||
| ): void | |||
| } | |||
| interface ComponentOptions { | |||
| /** | |||
| * [启用多slot支持](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#组件wxml的slot) | |||
| */ | |||
| multipleSlots?: boolean | |||
| /** | |||
| * [组件样式隔离](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#组件样式隔离) | |||
| */ | |||
| addGlobalClass?: boolean | |||
| /** | |||
| * [组件样式隔离](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#组件样式隔离) | |||
| */ | |||
| styleIsolation?: | |||
| | 'isolated' | |||
| | 'apply-shared' | |||
| | 'shared' | |||
| | 'page-isolated' | |||
| | 'page-apply-shared' | |||
| | 'page-shared' | |||
| /** | |||
| * [纯数据字段](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/pure-data.html) 是一些不用于界面渲染的 data 字段,可以用于提升页面更新性能。从小程序基础库版本 2.8.2 开始支持。 | |||
| */ | |||
| pureDataPattern?: RegExp | |||
| /** | |||
| * [虚拟化组件节点](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html#%E8%99%9A%E6%8B%9F%E5%8C%96%E7%BB%84%E4%BB%B6%E8%8A%82%E7%82%B9) 使自定义组件内部的第一层节点由自定义组件本身完全决定。从小程序基础库版本 [`2.11.2`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 开始支持 */ | |||
| virtualHost?: boolean | |||
| } | |||
| interface TriggerEventOption { | |||
| /** 事件是否冒泡 | |||
| * | |||
| * 默认值: `false` | |||
| */ | |||
| bubbles?: boolean | |||
| /** 事件是否可以穿越组件边界,为false时,事件将只能在引用组件的节点树上触发,不进入其他任何组件内部 | |||
| * | |||
| * 默认值: `false` | |||
| */ | |||
| composed?: boolean | |||
| /** 事件是否拥有捕获阶段 | |||
| * | |||
| * 默认值: `false` | |||
| */ | |||
| capturePhase?: boolean | |||
| } | |||
| interface RelationOption { | |||
| /** 目标组件的相对关系 */ | |||
| type: 'parent' | 'child' | 'ancestor' | 'descendant' | |||
| /** 关系生命周期函数,当关系被建立在页面节点树中时触发,触发时机在组件attached生命周期之后 */ | |||
| linked?(target: TrivialInstance): void | |||
| /** 关系生命周期函数,当关系在页面节点树中发生改变时触发,触发时机在组件moved生命周期之后 */ | |||
| linkChanged?(target: TrivialInstance): void | |||
| /** 关系生命周期函数,当关系脱离页面节点树时触发,触发时机在组件detached生命周期之后 */ | |||
| unlinked?(target: TrivialInstance): void | |||
| /** 如果这一项被设置,则它表示关联的目标节点所应具有的behavior,所有拥有这一behavior的组件节点都会被关联 */ | |||
| target?: string | |||
| } | |||
| interface PageLifetimes { | |||
| /** 页面生命周期回调—监听页面显示 | |||
| * | |||
| * 页面显示/切入前台时触发。 | |||
| */ | |||
| show(): void | |||
| /** 页面生命周期回调—监听页面隐藏 | |||
| * | |||
| * 页面隐藏/切入后台时触发。 如 `navigateTo` 或底部 `tab` 切换到其他页面,小程序切入后台等。 | |||
| */ | |||
| hide(): void | |||
| /** 页面生命周期回调—监听页面尺寸变化 | |||
| * | |||
| * 所在页面尺寸变化时执行 | |||
| */ | |||
| resize(size: Page.IResizeOption): void | |||
| } | |||
| type DefinitionFilter = <T extends TrivialOption>( | |||
| /** 使用该 behavior 的 component/behavior 的定义对象 */ | |||
| defFields: T, | |||
| /** 该 behavior 所使用的 behavior 的 definitionFilter 函数列表 */ | |||
| definitionFilterArr?: DefinitionFilter[] | |||
| ) => void | |||
| interface Lifetimes { | |||
| /** 组件生命周期声明对象,组件的生命周期:`created`、`attached`、`ready`、`moved`、`detached` 将收归到 `lifetimes` 字段内进行声明,原有声明方式仍旧有效,如同时存在两种声明方式,则 `lifetimes` 字段内声明方式优先级最高 | |||
| * | |||
| * 最低基础库: `2.2.3` */ | |||
| lifetimes: Partial<{ | |||
| /** | |||
| * 在组件实例刚刚被创建时执行,注意此时不能调用 `setData` | |||
| * | |||
| * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| */ | |||
| created(): void | |||
| /** | |||
| * 在组件实例进入页面节点树时执行 | |||
| * | |||
| * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| */ | |||
| attached(): void | |||
| /** | |||
| * 在组件在视图层布局完成后执行 | |||
| * | |||
| * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| */ | |||
| ready(): void | |||
| /** | |||
| * 在组件实例被移动到节点树另一个位置时执行 | |||
| * | |||
| * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| */ | |||
| moved(): void | |||
| /** | |||
| * 在组件实例被从页面节点树移除时执行 | |||
| * | |||
| * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| */ | |||
| detached(): void | |||
| /** | |||
| * 每当组件方法抛出错误时执行 | |||
| * | |||
| * 最低基础库版本:[`2.4.1`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| */ | |||
| error(err: Error): void | |||
| }> | |||
| /** | |||
| * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义 | |||
| * | |||
| * 在组件实例刚刚被创建时执行 | |||
| * | |||
| * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| */ | |||
| created(): void | |||
| /** | |||
| * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义 | |||
| * | |||
| * 在组件实例进入页面节点树时执行 | |||
| * | |||
| * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| */ | |||
| attached(): void | |||
| /** | |||
| * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义 | |||
| * | |||
| * 在组件在视图层布局完成后执行 | |||
| * | |||
| * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| */ | |||
| ready(): void | |||
| /** | |||
| * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义 | |||
| * | |||
| * 在组件实例被移动到节点树另一个位置时执行 | |||
| * | |||
| * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| */ | |||
| moved(): void | |||
| /** | |||
| * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义 | |||
| * | |||
| * 在组件实例被从页面节点树移除时执行 | |||
| * | |||
| * 最低基础库版本:[`1.6.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| */ | |||
| detached(): void | |||
| /** | |||
| * @deprecated 旧式的定义方式,基础库 `2.2.3` 起请在 lifetimes 中定义 | |||
| * | |||
| * 每当组件方法抛出错误时执行 | |||
| * | |||
| * 最低基础库版本:[`2.4.1`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| */ | |||
| error(err: Error): void | |||
| } | |||
| interface OtherOption { | |||
| /** 类似于mixins和traits的组件间代码复用机制,参见 [behaviors](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/behaviors.html) */ | |||
| behaviors: Behavior.BehaviorIdentifier[] | |||
| /** | |||
| * 组件数据字段监听器,用于监听 properties 和 data 的变化,参见 [数据监听器](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/observer.html) | |||
| * | |||
| * 最低基础库版本:[`2.6.1`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) | |||
| */ | |||
| observers: Record<string, (...args: any[]) => any> | |||
| /** 组件间关系定义,参见 [组件间关系](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/lifetimes.html) */ | |||
| relations: { | |||
| [componentName: string]: RelationOption | |||
| } | |||
| /** 组件接受的外部样式类,参见 [外部样式类](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/wxml-wxss.html) */ | |||
| externalClasses?: string[] | |||
| /** 组件所在页面的生命周期声明对象,参见 [组件生命周期](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/lifetimes.html) | |||
| * | |||
| * 最低基础库版本: [`2.2.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ | |||
| pageLifetimes?: Partial<PageLifetimes> | |||
| /** 一些选项(文档中介绍相关特性时会涉及具体的选项设置,这里暂不列举) */ | |||
| options: ComponentOptions | |||
| /** 定义段过滤器,用于自定义组件扩展,参见 [自定义组件扩展](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/extend.html) | |||
| * | |||
| * 最低基础库版本: [`2.2.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ | |||
| definitionFilter?: DefinitionFilter | |||
| /** | |||
| * 组件自定义导出,当使用 `behavior: wx://component-export` 时,这个定义段可以用于指定组件被 selectComponent 调用时的返回值,参见 [组件间通信与事件](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/events.html) | |||
| * 最低基础库版本: [`2.2.3`](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) */ | |||
| export: () => IAnyObject | |||
| } | |||
| interface KeyFrame { | |||
| /** 关键帧的偏移,范围[0-1] */ | |||
| offset?: number | |||
| /** 动画缓动函数 */ | |||
| ease?: string | |||
| /** 基点位置,即 CSS transform-origin */ | |||
| transformOrigin?: string | |||
| /** 背景颜色,即 CSS background-color */ | |||
| backgroundColor?: string | |||
| /** 底边位置,即 CSS bottom */ | |||
| bottom?: number | string | |||
| /** 高度,即 CSS height */ | |||
| height?: number | string | |||
| /** 左边位置,即 CSS left */ | |||
| left?: number | string | |||
| /** 宽度,即 CSS width */ | |||
| width?: number | string | |||
| /** 不透明度,即 CSS opacity */ | |||
| opacity?: number | string | |||
| /** 右边位置,即 CSS right */ | |||
| right?: number | string | |||
| /** 顶边位置,即 CSS top */ | |||
| top?: number | string | |||
| /** 变换矩阵,即 CSS transform matrix */ | |||
| matrix?: number[] | |||
| /** 三维变换矩阵,即 CSS transform matrix3d */ | |||
| matrix3d?: number[] | |||
| /** 旋转,即 CSS transform rotate */ | |||
| rotate?: number | |||
| /** 三维旋转,即 CSS transform rotate3d */ | |||
| rotate3d?: number[] | |||
| /** X 方向旋转,即 CSS transform rotateX */ | |||
| rotateX?: number | |||
| /** Y 方向旋转,即 CSS transform rotateY */ | |||
| rotateY?: number | |||
| /** Z 方向旋转,即 CSS transform rotateZ */ | |||
| rotateZ?: number | |||
| /** 缩放,即 CSS transform scale */ | |||
| scale?: number[] | |||
| /** 三维缩放,即 CSS transform scale3d */ | |||
| scale3d?: number[] | |||
| /** X 方向缩放,即 CSS transform scaleX */ | |||
| scaleX?: number | |||
| /** Y 方向缩放,即 CSS transform scaleY */ | |||
| scaleY?: number | |||
| /** Z 方向缩放,即 CSS transform scaleZ */ | |||
| scaleZ?: number | |||
| /** 倾斜,即 CSS transform skew */ | |||
| skew?: number[] | |||
| /** X 方向倾斜,即 CSS transform skewX */ | |||
| skewX?: number | |||
| /** Y 方向倾斜,即 CSS transform skewY */ | |||
| skewY?: number | |||
| /** 位移,即 CSS transform translate */ | |||
| translate?: Array<number | string> | |||
| /** 三维位移,即 CSS transform translate3d */ | |||
| translate3d?: Array<number | string> | |||
| /** X 方向位移,即 CSS transform translateX */ | |||
| translateX?: number | string | |||
| /** Y 方向位移,即 CSS transform translateY */ | |||
| translateY?: number | string | |||
| /** Z 方向位移,即 CSS transform translateZ */ | |||
| translateZ?: number | string | |||
| } | |||
| interface ClearAnimationOptions { | |||
| /** 基点位置,即 CSS transform-origin */ | |||
| transformOrigin?: boolean | |||
| /** 背景颜色,即 CSS background-color */ | |||
| backgroundColor?: boolean | |||
| /** 底边位置,即 CSS bottom */ | |||
| bottom?: boolean | |||
| /** 高度,即 CSS height */ | |||
| height?: boolean | |||
| /** 左边位置,即 CSS left */ | |||
| left?: boolean | |||
| /** 宽度,即 CSS width */ | |||
| width?: boolean | |||
| /** 不透明度,即 CSS opacity */ | |||
| opacity?: boolean | |||
| /** 右边位置,即 CSS right */ | |||
| right?: boolean | |||
| /** 顶边位置,即 CSS top */ | |||
| top?: boolean | |||
| /** 变换矩阵,即 CSS transform matrix */ | |||
| matrix?: boolean | |||
| /** 三维变换矩阵,即 CSS transform matrix3d */ | |||
| matrix3d?: boolean | |||
| /** 旋转,即 CSS transform rotate */ | |||
| rotate?: boolean | |||
| /** 三维旋转,即 CSS transform rotate3d */ | |||
| rotate3d?: boolean | |||
| /** X 方向旋转,即 CSS transform rotateX */ | |||
| rotateX?: boolean | |||
| /** Y 方向旋转,即 CSS transform rotateY */ | |||
| rotateY?: boolean | |||
| /** Z 方向旋转,即 CSS transform rotateZ */ | |||
| rotateZ?: boolean | |||
| /** 缩放,即 CSS transform scale */ | |||
| scale?: boolean | |||
| /** 三维缩放,即 CSS transform scale3d */ | |||
| scale3d?: boolean | |||
| /** X 方向缩放,即 CSS transform scaleX */ | |||
| scaleX?: boolean | |||
| /** Y 方向缩放,即 CSS transform scaleY */ | |||
| scaleY?: boolean | |||
| /** Z 方向缩放,即 CSS transform scaleZ */ | |||
| scaleZ?: boolean | |||
| /** 倾斜,即 CSS transform skew */ | |||
| skew?: boolean | |||
| /** X 方向倾斜,即 CSS transform skewX */ | |||
| skewX?: boolean | |||
| /** Y 方向倾斜,即 CSS transform skewY */ | |||
| skewY?: boolean | |||
| /** 位移,即 CSS transform translate */ | |||
| translate?: boolean | |||
| /** 三维位移,即 CSS transform translate3d */ | |||
| translate3d?: boolean | |||
| /** X 方向位移,即 CSS transform translateX */ | |||
| translateX?: boolean | |||
| /** Y 方向位移,即 CSS transform translateY */ | |||
| translateY?: boolean | |||
| /** Z 方向位移,即 CSS transform translateZ */ | |||
| translateZ?: boolean | |||
| } | |||
| interface ScrollTimelineKeyframe { | |||
| composite?: 'replace' | 'add' | 'accumulate' | 'auto' | |||
| easing?: string | |||
| offset?: number | null | |||
| [property: string]: string | number | null | undefined | |||
| } | |||
| interface ScrollTimelineOption { | |||
| /** 指定滚动元素的选择器(只支持 scroll-view),该元素滚动时会驱动动画的进度 */ | |||
| scrollSource: string | |||
| /** 指定滚动的方向。有效值为 horizontal 或 vertical */ | |||
| orientation?: string | |||
| /** 指定开始驱动动画进度的滚动偏移量,单位 px */ | |||
| startScrollOffset: number | |||
| /** 指定停止驱动动画进度的滚动偏移量,单位 px */ | |||
| endScrollOffset: number | |||
| /** 起始和结束的滚动范围映射的时间长度,该时间可用于与关键帧动画里的时间 (duration) 相匹配,单位 ms */ | |||
| timeRange: number | |||
| } | |||
| interface SetUpdatePerformanceListenerOption<WithDataPath> { | |||
| /** 是否返回变更的 data 字段信息 */ | |||
| withDataPaths?: WithDataPath | |||
| } | |||
| interface UpdatePerformanceListener<WithDataPath> { | |||
| (res: UpdatePerformance<WithDataPath>): void | |||
| } | |||
| interface UpdatePerformance<WithDataPath> { | |||
| /** 此次更新过程的 ID */ | |||
| updateProcessId: number | |||
| /** 对于子更新,返回它所属的更新过程 ID */ | |||
| parentUpdateProcessId?: number | |||
| /** 是否是被合并更新,如果是,则 updateProcessId 表示被合并到的更新过程 ID */ | |||
| isMergedUpdate: boolean | |||
| /** 此次更新的 data 字段信息,只有 withDataPaths 设为 true 时才会返回 */ | |||
| dataPaths: WithDataPath extends true ? string[] : undefined | |||
| /** 此次更新进入等待队列时的时间戳 */ | |||
| pendingStartTimestamp: number | |||
| /** 更新运算开始时的时间戳 */ | |||
| updateStartTimestamp: number | |||
| /** 更新运算结束时的时间戳 */ | |||
| updateEndTimestamp: number | |||
| } | |||
| } | |||
| /** Component构造器可用于定义组件,调用Component构造器时可以指定组件的属性、数据、方法等。 | |||
| * | |||
| * * 使用 `this.data` 可以获取内部数据和属性值,但不要直接修改它们,应使用 `setData` 修改。 | |||
| * * 生命周期函数无法在组件方法中通过 `this` 访问到。 | |||
| * * 属性名应避免以 data 开头,即不要命名成 `dataXyz` 这样的形式,因为在 WXML 中, `data-xyz=""` 会被作为节点 dataset 来处理,而不是组件属性。 | |||
| * * 在一个组件的定义和使用时,组件的属性名和 data 字段相互间都不能冲突(尽管它们位于不同的定义段中)。 | |||
| * * 从基础库 `2.0.9` 开始,对象类型的属性和 data 字段中可以包含函数类型的子字段,即可以通过对象类型的属性字段来传递函数。低于这一版本的基础库不支持这一特性。 | |||
| * * `bug` : 对于 type 为 Object 或 Array 的属性,如果通过该组件自身的 `this.setData` 来改变属性值的一个子字段,则依旧会触发属性 observer ,且 observer 接收到的 `newVal` 是变化的那个子字段的值, `oldVal` 为空, `changedPath` 包含子字段的字段名相关信息。 | |||
| */ | |||
| declare let Component: WechatMiniprogram.Component.Constructor | |||
| @@ -0,0 +1,272 @@ | |||
| /*! ***************************************************************************** | |||
| Copyright (c) 2023 Tencent, Inc. All rights reserved. | |||
| Permission is hereby granted, free of charge, to any person obtaining a copy of | |||
| this software and associated documentation files (the "Software"), to deal in | |||
| the Software without restriction, including without limitation the rights to | |||
| use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies | |||
| of the Software, and to permit persons to whom the Software is furnished to do | |||
| so, subject to the following conditions: | |||
| The above copyright notice and this permission notice shall be included in all | |||
| copies or substantial portions of the Software. | |||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||
| SOFTWARE. | |||
| ***************************************************************************** */ | |||
| declare namespace WechatMiniprogram.Page { | |||
| type Instance< | |||
| TData extends DataOption, | |||
| TCustom extends CustomOption | |||
| > = OptionalInterface<ILifetime> & | |||
| InstanceProperties & | |||
| InstanceMethods<TData> & | |||
| Data<TData> & | |||
| TCustom | |||
| type Options< | |||
| TData extends DataOption, | |||
| TCustom extends CustomOption | |||
| > = (TCustom & | |||
| Partial<Data<TData>> & | |||
| Partial<ILifetime> & { | |||
| options?: Component.ComponentOptions | |||
| }) & | |||
| ThisType<Instance<TData, TCustom>> | |||
| type TrivialInstance = Instance<IAnyObject, IAnyObject> | |||
| interface Constructor { | |||
| <TData extends DataOption, TCustom extends CustomOption>( | |||
| options: Options<TData, TCustom> | |||
| ): void | |||
| } | |||
| interface ILifetime { | |||
| /** 生命周期回调—监听页面加载 | |||
| * | |||
| * 页面加载时触发。一个页面只会调用一次,可以在 onLoad 的参数中获取打开当前页面路径中的参数。 | |||
| */ | |||
| onLoad( | |||
| /** 打开当前页面路径中的参数 */ | |||
| query: Record<string, string | undefined> | |||
| ): void | Promise<void> | |||
| /** 生命周期回调—监听页面显示 | |||
| * | |||
| * 页面显示/切入前台时触发。 | |||
| */ | |||
| onShow(): void | Promise<void> | |||
| /** 生命周期回调—监听页面初次渲染完成 | |||
| * | |||
| * 页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。 | |||
| * | |||
| * 注意:对界面内容进行设置的 API 如`wx.setNavigationBarTitle`,请在`onReady`之后进行。 | |||
| */ | |||
| onReady(): void | Promise<void> | |||
| /** 生命周期回调—监听页面隐藏 | |||
| * | |||
| * 页面隐藏/切入后台时触发。 如 `navigateTo` 或底部 `tab` 切换到其他页面,小程序切入后台等。 | |||
| */ | |||
| onHide(): void | Promise<void> | |||
| /** 生命周期回调—监听页面卸载 | |||
| * | |||
| * 页面卸载时触发。如`redirectTo`或`navigateBack`到其他页面时。 | |||
| */ | |||
| onUnload(): void | Promise<void> | |||
| /** 监听用户下拉动作 | |||
| * | |||
| * 监听用户下拉刷新事件。 | |||
| * - 需要在`app.json`的`window`选项中或页面配置中开启`enablePullDownRefresh`。 | |||
| * - 可以通过`wx.startPullDownRefresh`触发下拉刷新,调用后触发下拉刷新动画,效果与用户手动下拉刷新一致。 | |||
| * - 当处理完数据刷新后,`wx.stopPullDownRefresh`可以停止当前页面的下拉刷新。 | |||
| */ | |||
| onPullDownRefresh(): void | Promise<void> | |||
| /** 页面上拉触底事件的处理函数 | |||
| * | |||
| * 监听用户上拉触底事件。 | |||
| * - 可以在`app.json`的`window`选项中或页面配置中设置触发距离`onReachBottomDistance`。 | |||
| * - 在触发距离内滑动期间,本事件只会被触发一次。 | |||
| */ | |||
| onReachBottom(): void | Promise<void> | |||
| /** 用户点击右上角转发 | |||
| * | |||
| * 监听用户点击页面内转发按钮(`<button>` 组件 `open-type="share"`)或右上角菜单“转发”按钮的行为,并自定义转发内容。 | |||
| * | |||
| * **注意:只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮** | |||
| * | |||
| * 此事件需要 return 一个 Object,用于自定义转发内容 | |||
| */ | |||
| onShareAppMessage( | |||
| /** 分享发起来源参数 */ | |||
| options: IShareAppMessageOption | |||
| ): | |||
| | ICustomShareContent | |||
| | IAsyncCustomShareContent | |||
| | Promise<ICustomShareContent> | |||
| | void | |||
| | Promise<void> | |||
| /** | |||
| * 监听右上角菜单“分享到朋友圈”按钮的行为,并自定义分享内容 | |||
| * | |||
| * 本接口为 Beta 版本,暂只在 Android 平台支持,详见 [分享到朋友圈 (Beta)](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share-timeline.html) | |||
| * | |||
| * 基础库 2.11.3 开始支持,低版本需做兼容处理。 | |||
| */ | |||
| onShareTimeline(): ICustomTimelineContent | void | |||
| /** 页面滚动触发事件的处理函数 | |||
| * | |||
| * 监听用户滑动页面事件。 | |||
| */ | |||
| onPageScroll( | |||
| /** 页面滚动参数 */ | |||
| options: IPageScrollOption | |||
| ): void | Promise<void> | |||
| /** 当前是 tab 页时,点击 tab 时触发,最低基础库: `1.9.0` */ | |||
| onTabItemTap( | |||
| /** tab 点击参数 */ | |||
| options: ITabItemTapOption | |||
| ): void | Promise<void> | |||
| /** 窗口尺寸改变时触发,最低基础库:`2.4.0` */ | |||
| onResize( | |||
| /** 窗口尺寸参数 */ | |||
| options: IResizeOption | |||
| ): void | Promise<void> | |||
| /** | |||
| * 监听用户点击右上角菜单“收藏”按钮的行为,并自定义收藏内容。 | |||
| * 基础库 2.10.3,安卓 7.0.15 版本起支持,iOS 暂不支持 | |||
| */ | |||
| onAddToFavorites(options: IAddToFavoritesOption): IAddToFavoritesContent | |||
| } | |||
| interface InstanceProperties { | |||
| /** 页面的文件路径 */ | |||
| is: string | |||
| /** 到当前页面的路径 */ | |||
| route: string | |||
| /** 打开当前页面路径中的参数 */ | |||
| options: Record<string, string | undefined> | |||
| } | |||
| type DataOption = Record<string, any> | |||
| type CustomOption = Record<string, any> | |||
| type InstanceMethods<D extends DataOption> = Component.InstanceMethods<D> | |||
| interface Data<D extends DataOption> { | |||
| /** 页面的初始数据 | |||
| * | |||
| * `data` 是页面第一次渲染使用的**初始数据**。 | |||
| * | |||
| * 页面加载时,`data` 将会以`JSON`字符串的形式由逻辑层传至渲染层,因此`data`中的数据必须是可以转成`JSON`的类型:字符串,数字,布尔值,对象,数组。 | |||
| * | |||
| * 渲染层可以通过 `WXML` 对数据进行绑定。 | |||
| */ | |||
| data: D | |||
| } | |||
| interface ICustomShareContent { | |||
| /** 转发标题。默认值:当前小程序名称 */ | |||
| title?: string | |||
| /** 转发路径,必须是以 / 开头的完整路径。默认值:当前页面 path */ | |||
| path?: string | |||
| /** 自定义图片路径,可以是本地文件路径、代码包文件路径或者网络图片路径。支持PNG及JPG。显示图片长宽比是 5:4,最低基础库: `1.5.0`。默认值:使用默认截图 */ | |||
| imageUrl?: string | |||
| } | |||
| interface IAsyncCustomShareContent extends ICustomShareContent { | |||
| promise: Promise<ICustomShareContent> | |||
| } | |||
| interface ICustomTimelineContent { | |||
| /** 自定义标题,即朋友圈列表页上显示的标题。默认值:当前小程序名称 */ | |||
| title?: string | |||
| /** 自定义页面路径中携带的参数,如 `path?a=1&b=2` 的 “?” 后面部分 默认值:当前页面路径携带的参数 */ | |||
| query?: string | |||
| /** 自定义图片路径,可以是本地文件路径、代码包文件路径或者网络图片路径。支持 PNG 及 JPG。显示图片长宽比是 1:1。默认值:默认使用小程序 Logo*/ | |||
| imageUrl?: string | |||
| } | |||
| interface IPageScrollOption { | |||
| /** 页面在垂直方向已滚动的距离(单位px) */ | |||
| scrollTop: number | |||
| } | |||
| interface IShareAppMessageOption { | |||
| /** 转发事件来源。 | |||
| * | |||
| * 可选值: | |||
| * - `button`:页面内转发按钮; | |||
| * - `menu`:右上角转发菜单。 | |||
| * | |||
| * 最低基础库: `1.2.4` | |||
| */ | |||
| from: 'button' | 'menu' | |||
| /** 如果 `from` 值是 `button`,则 `target` 是触发这次转发事件的 `button`,否则为 `undefined` | |||
| * | |||
| * 最低基础库: `1.2.4` */ | |||
| target: any | |||
| /** 页面中包含`<web-view>`组件时,返回当前`<web-view>`的url | |||
| * | |||
| * 最低基础库: `1.6.4` | |||
| */ | |||
| webViewUrl?: string | |||
| } | |||
| interface ITabItemTapOption { | |||
| /** 被点击tabItem的序号,从0开始,最低基础库: `1.9.0` */ | |||
| index: string | |||
| /** 被点击tabItem的页面路径,最低基础库: `1.9.0` */ | |||
| pagePath: string | |||
| /** 被点击tabItem的按钮文字,最低基础库: `1.9.0` */ | |||
| text: string | |||
| } | |||
| interface IResizeOption { | |||
| size: { | |||
| /** 变化后的窗口宽度,单位 px */ | |||
| windowWidth: number | |||
| /** 变化后的窗口高度,单位 px */ | |||
| windowHeight: number | |||
| } | |||
| } | |||
| interface IAddToFavoritesOption { | |||
| /** 页面中包含web-view组件时,返回当前web-view的url */ | |||
| webviewUrl?: string | |||
| } | |||
| interface IAddToFavoritesContent { | |||
| /** 自定义标题,默认值:页面标题或账号名称 */ | |||
| title?: string | |||
| /** 自定义图片,显示图片长宽比为 1:1,默认值:页面截图 */ | |||
| imageUrl?: string | |||
| /** 自定义query字段,默认值:当前页面的query */ | |||
| query?: string | |||
| } | |||
| interface GetCurrentPages { | |||
| (): Array<Instance<IAnyObject, IAnyObject>> | |||
| } | |||
| } | |||
| /** | |||
| * 注册小程序中的一个页面。接受一个 `Object` 类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等。 | |||
| */ | |||
| declare let Page: WechatMiniprogram.Page.Constructor | |||
| /** | |||
| * 获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。 | |||
| * __注意:__ | |||
| * - __不要尝试修改页面栈,会导致路由以及页面状态错误。__ | |||
| * - 不要在 `App.onLaunch` 的时候调用 `getCurrentPages()`,此时 `page` 还没有生成。 | |||
| */ | |||
| declare let getCurrentPages: WechatMiniprogram.Page.GetCurrentPages | |||