@@ -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 |