commit
7375c5dd1d
33 changed files with 24090 additions and 0 deletions
@ -0,0 +1,21 @@ |
|||||||
|
{ |
||||||
|
"name": "geneb", |
||||||
|
"version": "1.0.0", |
||||||
|
"description": "", |
||||||
|
"keywords": [], |
||||||
|
"author": "", |
||||||
|
"license": "", |
||||||
|
"scripts": {}, |
||||||
|
"type": "module", |
||||||
|
"dependencies": { |
||||||
|
"@vant/weapp": "^1.11.1", |
||||||
|
"dayjs": "^1.11.10", |
||||||
|
"miniprogram-licia": "^1.39.1", |
||||||
|
"mp-html": "^2.4.2", |
||||||
|
"number-precision": "^1.6.0" |
||||||
|
}, |
||||||
|
"devDependencies": { |
||||||
|
"miniprogram-api-typings": "^3.12.2", |
||||||
|
"typescript": "^5.8.3" |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,73 @@ |
|||||||
|
lockfileVersion: '9.0' |
||||||
|
|
||||||
|
settings: |
||||||
|
autoInstallPeers: true |
||||||
|
excludeLinksFromLockfile: false |
||||||
|
|
||||||
|
importers: |
||||||
|
|
||||||
|
.: |
||||||
|
dependencies: |
||||||
|
'@vant/weapp': |
||||||
|
specifier: ^1.11.1 |
||||||
|
version: 1.11.7 |
||||||
|
dayjs: |
||||||
|
specifier: ^1.11.10 |
||||||
|
version: 1.11.13 |
||||||
|
miniprogram-licia: |
||||||
|
specifier: ^1.39.1 |
||||||
|
version: 1.48.0 |
||||||
|
mp-html: |
||||||
|
specifier: ^2.4.2 |
||||||
|
version: 2.5.1 |
||||||
|
number-precision: |
||||||
|
specifier: ^1.6.0 |
||||||
|
version: 1.6.0 |
||||||
|
devDependencies: |
||||||
|
miniprogram-api-typings: |
||||||
|
specifier: ^3.12.2 |
||||||
|
version: 3.12.3 |
||||||
|
typescript: |
||||||
|
specifier: ^5.8.3 |
||||||
|
version: 5.8.3 |
||||||
|
|
||||||
|
packages: |
||||||
|
|
||||||
|
'@vant/weapp@1.11.7': |
||||||
|
resolution: {integrity: sha512-Rwn9BBnb4kHSV4XmvBicwtd42J+amEUfnFDcXJsGNPNX4a9c/DoT6YLsm4X1wB2+sQbdiQsbFBLAvGRBxCkD8g==} |
||||||
|
|
||||||
|
dayjs@1.11.13: |
||||||
|
resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} |
||||||
|
|
||||||
|
miniprogram-api-typings@3.12.3: |
||||||
|
resolution: {integrity: sha512-o7bOfrU28MEMCBWo83nXv0ROQSBFxJcfCl4f2wTYqah64ipC5RGqLJfvWJTWhlQt2ECVwspSzM8LgvnfMo7TEQ==} |
||||||
|
|
||||||
|
miniprogram-licia@1.48.0: |
||||||
|
resolution: {integrity: sha512-pe+l/+cIYIWZkLMKCANUQkqwiqrgEw0/Sm9juulXM/teUumG7mm9A9zTXzIlImpv84iizbkYxKZ32WE0U6qSxA==} |
||||||
|
|
||||||
|
mp-html@2.5.1: |
||||||
|
resolution: {integrity: sha512-7BEH8dnQ89kOIyjdoYni8zcc0QAg+lgEWg0n9or9q2D4l26JNG+KPzHfttDyisC/5S7aPBblpXrFTYQv475w/Q==} |
||||||
|
|
||||||
|
number-precision@1.6.0: |
||||||
|
resolution: {integrity: sha512-05OLPgbgmnixJw+VvEh18yNPUo3iyp4BEWJcrLu4X9W05KmMifN7Mu5exYvQXqxxeNWhvIF+j3Rij+HmddM/hQ==} |
||||||
|
|
||||||
|
typescript@5.8.3: |
||||||
|
resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} |
||||||
|
engines: {node: '>=14.17'} |
||||||
|
hasBin: true |
||||||
|
|
||||||
|
snapshots: |
||||||
|
|
||||||
|
'@vant/weapp@1.11.7': {} |
||||||
|
|
||||||
|
dayjs@1.11.13: {} |
||||||
|
|
||||||
|
miniprogram-api-typings@3.12.3: {} |
||||||
|
|
||||||
|
miniprogram-licia@1.48.0: {} |
||||||
|
|
||||||
|
mp-html@2.5.1: {} |
||||||
|
|
||||||
|
number-precision@1.6.0: {} |
||||||
|
|
||||||
|
typescript@5.8.3: {} |
@ -0,0 +1,51 @@ |
|||||||
|
{ |
||||||
|
"description": "项目配置文件", |
||||||
|
"miniprogramRoot": "src/", |
||||||
|
"compileType": "src", |
||||||
|
"setting": { |
||||||
|
"useCompilerPlugins": [ |
||||||
|
"typescript", |
||||||
|
"sass" |
||||||
|
], |
||||||
|
"babelSetting": { |
||||||
|
"ignore": [], |
||||||
|
"disablePlugins": [], |
||||||
|
"outputPath": "" |
||||||
|
}, |
||||||
|
"coverView": false, |
||||||
|
"postcss": false, |
||||||
|
"minified": false, |
||||||
|
"enhance": false, |
||||||
|
"showShadowRootInWxmlPanel": false, |
||||||
|
"packNpmRelationList": [], |
||||||
|
"ignoreUploadUnusedFiles": true, |
||||||
|
"compileHotReLoad": false, |
||||||
|
"skylineRenderEnable": true, |
||||||
|
"es6": false, |
||||||
|
"compileWorklet": false, |
||||||
|
"uglifyFileName": false, |
||||||
|
"uploadWithSourceMap": true, |
||||||
|
"packNpmManually": false, |
||||||
|
"minifyWXSS": true, |
||||||
|
"minifyWXML": true, |
||||||
|
"localPlugins": false, |
||||||
|
"condition": false, |
||||||
|
"swc": false, |
||||||
|
"disableSWC": true, |
||||||
|
"disableUseStrict": false |
||||||
|
}, |
||||||
|
"simulatorType": "wechat", |
||||||
|
"simulatorPluginLibVersion": {}, |
||||||
|
"condition": {}, |
||||||
|
"srcMiniprogramRoot": "src/", |
||||||
|
"editorSetting": { |
||||||
|
"tabIndent": "insertSpaces", |
||||||
|
"tabSize": 2 |
||||||
|
}, |
||||||
|
"libVersion": "2.32.3", |
||||||
|
"packOptions": { |
||||||
|
"ignore": [], |
||||||
|
"include": [] |
||||||
|
}, |
||||||
|
"appid": "wxaae50c206446a964" |
||||||
|
} |
@ -0,0 +1,22 @@ |
|||||||
|
{ |
||||||
|
"libVersion": "2.32.3", |
||||||
|
"projectname": "GeneB-miniprogram", |
||||||
|
"setting": { |
||||||
|
"urlCheck": true, |
||||||
|
"coverView": false, |
||||||
|
"lazyloadPlaceholderEnable": false, |
||||||
|
"skylineRenderEnable": true, |
||||||
|
"preloadBackgroundData": false, |
||||||
|
"autoAudits": false, |
||||||
|
"useApiHook": true, |
||||||
|
"useApiHostProcess": true, |
||||||
|
"showShadowRootInWxmlPanel": false, |
||||||
|
"useStaticServer": false, |
||||||
|
"useLanDebug": false, |
||||||
|
"showES6CompileOption": false, |
||||||
|
"compileHotReLoad": true, |
||||||
|
"bigPackageSizeSupport": false, |
||||||
|
"checkInvalidKey": true, |
||||||
|
"ignoreDevUnusedFiles": true |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,24 @@ |
|||||||
|
{ |
||||||
|
"pages": [ |
||||||
|
"pages/index/index", |
||||||
|
"pages/logs/logs" |
||||||
|
], |
||||||
|
"window": { |
||||||
|
"navigationBarTextStyle": "black", |
||||||
|
"navigationStyle": "custom" |
||||||
|
}, |
||||||
|
"style": "v2", |
||||||
|
"rendererOptions": { |
||||||
|
"skyline": { |
||||||
|
"defaultDisplayBlock": true, |
||||||
|
"defaultContentBox": true, |
||||||
|
"tagNameStyleIsolation": "legacy", |
||||||
|
"disableABTest": true, |
||||||
|
"sdkVersionBegin": "3.0.0", |
||||||
|
"sdkVersionEnd": "15.255.255" |
||||||
|
} |
||||||
|
}, |
||||||
|
"componentFramework": "glass-easel", |
||||||
|
"sitemapLocation": "sitemap.json", |
||||||
|
"lazyCodeLoading": "requiredComponents" |
||||||
|
} |
@ -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,5 @@ |
|||||||
|
{ |
||||||
|
"component": true, |
||||||
|
"styleIsolation": "apply-shared", |
||||||
|
"usingComponents": {} |
||||||
|
} |
@ -0,0 +1,96 @@ |
|||||||
|
.weui-navigation-bar { |
||||||
|
--weui-FG-0:rgba(0,0,0,.9); |
||||||
|
--height: 44px; |
||||||
|
--left: 16px; |
||||||
|
} |
||||||
|
.weui-navigation-bar .android { |
||||||
|
--height: 48px; |
||||||
|
} |
||||||
|
|
||||||
|
.weui-navigation-bar { |
||||||
|
overflow: hidden; |
||||||
|
color: var(--weui-FG-0); |
||||||
|
flex: none; |
||||||
|
} |
||||||
|
|
||||||
|
.weui-navigation-bar__inner { |
||||||
|
position: relative; |
||||||
|
top: 0; |
||||||
|
left: 0; |
||||||
|
height: calc(var(--height) + env(safe-area-inset-top)); |
||||||
|
display: flex; |
||||||
|
flex-direction: row; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
padding-top: env(safe-area-inset-top); |
||||||
|
width: 100%; |
||||||
|
box-sizing: border-box; |
||||||
|
} |
||||||
|
|
||||||
|
.weui-navigation-bar__left { |
||||||
|
position: relative; |
||||||
|
padding-left: var(--left); |
||||||
|
display: flex; |
||||||
|
flex-direction: row; |
||||||
|
align-items: flex-start; |
||||||
|
height: 100%; |
||||||
|
box-sizing: border-box; |
||||||
|
} |
||||||
|
|
||||||
|
.weui-navigation-bar__btn_goback_wrapper { |
||||||
|
padding: 11px 18px 11px 16px; |
||||||
|
margin: -11px -18px -11px -16px; |
||||||
|
} |
||||||
|
|
||||||
|
.weui-navigation-bar__btn_goback_wrapper.weui-active { |
||||||
|
opacity: 0.5; |
||||||
|
} |
||||||
|
|
||||||
|
.weui-navigation-bar__btn_goback { |
||||||
|
font-size: 12px; |
||||||
|
width: 12px; |
||||||
|
height: 24px; |
||||||
|
-webkit-mask: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='24' viewBox='0 0 12 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M10 19.438L8.955 20.5l-7.666-7.79a1.02 1.02 0 0 1 0-1.42L8.955 3.5 10 4.563 2.682 12 10 19.438z'/%3E%3C/svg%3E") no-repeat 50% 50%; |
||||||
|
mask: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='24' viewBox='0 0 12 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M10 19.438L8.955 20.5l-7.666-7.79a1.02 1.02 0 0 1 0-1.42L8.955 3.5 10 4.563 2.682 12 10 19.438z'/%3E%3C/svg%3E") no-repeat 50% 50%; |
||||||
|
-webkit-mask-size: cover; |
||||||
|
mask-size: cover; |
||||||
|
background-color: var(--weui-FG-0); |
||||||
|
} |
||||||
|
|
||||||
|
.weui-navigation-bar__center { |
||||||
|
font-size: 17px; |
||||||
|
text-align: center; |
||||||
|
position: relative; |
||||||
|
display: flex; |
||||||
|
flex-direction: row; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
font-weight: bold; |
||||||
|
flex: 1; |
||||||
|
height: 100%; |
||||||
|
} |
||||||
|
|
||||||
|
.weui-navigation-bar__loading { |
||||||
|
margin-right: 4px; |
||||||
|
align-items: center; |
||||||
|
} |
||||||
|
|
||||||
|
.weui-loading { |
||||||
|
font-size: 16px; |
||||||
|
width: 16px; |
||||||
|
height: 16px; |
||||||
|
display: block; |
||||||
|
background: transparent url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg width='80px' height='80px' viewBox='0 0 80 80' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Ctitle%3Eloading%3C/title%3E%3Cdefs%3E%3ClinearGradient x1='94.0869141%25' y1='0%25' x2='94.0869141%25' y2='90.559082%25' id='linearGradient-1'%3E%3Cstop stop-color='%23606060' stop-opacity='0' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3ClinearGradient x1='100%25' y1='8.67370605%25' x2='100%25' y2='90.6286621%25' id='linearGradient-2'%3E%3Cstop stop-color='%23606060' offset='0%25'%3E%3C/stop%3E%3Cstop stop-color='%23606060' stop-opacity='0.3' offset='100%25'%3E%3C/stop%3E%3C/linearGradient%3E%3C/defs%3E%3Cg stroke='none' stroke-width='1' fill='none' fill-rule='evenodd' opacity='0.9'%3E%3Cg%3E%3Cpath d='M40,0 C62.09139,0 80,17.90861 80,40 C80,62.09139 62.09139,80 40,80 L40,73 C58.2253967,73 73,58.2253967 73,40 C73,21.7746033 58.2253967,7 40,7 L40,0 Z' fill='url(%23linearGradient-1)'%3E%3C/path%3E%3Cpath d='M40,0 L40,7 C21.7746033,7 7,21.7746033 7,40 C7,58.2253967 21.7746033,73 40,73 L40,80 C17.90861,80 0,62.09139 0,40 C0,17.90861 17.90861,0 40,0 Z' fill='url(%23linearGradient-2)'%3E%3C/path%3E%3Ccircle id='Oval' fill='%23606060' cx='40.5' cy='3.5' r='3.5'%3E%3C/circle%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A") no-repeat; |
||||||
|
background-size: 100%; |
||||||
|
margin-left: 0; |
||||||
|
animation: loading linear infinite 1s; |
||||||
|
} |
||||||
|
|
||||||
|
@keyframes loading { |
||||||
|
from { |
||||||
|
transform: rotate(0); |
||||||
|
} |
||||||
|
to { |
||||||
|
transform: rotate(360deg); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,105 @@ |
|||||||
|
Component({ |
||||||
|
options: { |
||||||
|
multipleSlots: true // 在组件定义时的选项中启用多slot支持
|
||||||
|
}, |
||||||
|
/** |
||||||
|
* 组件的属性列表 |
||||||
|
*/ |
||||||
|
properties: { |
||||||
|
extClass: { |
||||||
|
type: String, |
||||||
|
value: '' |
||||||
|
}, |
||||||
|
title: { |
||||||
|
type: String, |
||||||
|
value: '' |
||||||
|
}, |
||||||
|
background: { |
||||||
|
type: String, |
||||||
|
value: '' |
||||||
|
}, |
||||||
|
color: { |
||||||
|
type: String, |
||||||
|
value: '' |
||||||
|
}, |
||||||
|
back: { |
||||||
|
type: Boolean, |
||||||
|
value: true |
||||||
|
}, |
||||||
|
loading: { |
||||||
|
type: Boolean, |
||||||
|
value: false |
||||||
|
}, |
||||||
|
homeButton: { |
||||||
|
type: Boolean, |
||||||
|
value: false, |
||||||
|
}, |
||||||
|
animated: { |
||||||
|
// 显示隐藏的时候opacity动画效果
|
||||||
|
type: Boolean, |
||||||
|
value: true |
||||||
|
}, |
||||||
|
show: { |
||||||
|
// 显示隐藏导航,隐藏的时候navigation-bar的高度占位还在
|
||||||
|
type: Boolean, |
||||||
|
value: true, |
||||||
|
observer: '_showChange' |
||||||
|
}, |
||||||
|
// back为true的时候,返回的页面深度
|
||||||
|
delta: { |
||||||
|
type: Number, |
||||||
|
value: 1 |
||||||
|
}, |
||||||
|
}, |
||||||
|
/** |
||||||
|
* 组件的初始数据 |
||||||
|
*/ |
||||||
|
data: { |
||||||
|
displayStyle: '' |
||||||
|
}, |
||||||
|
lifetimes: { |
||||||
|
attached() { |
||||||
|
const rect = wx.getMenuButtonBoundingClientRect() |
||||||
|
wx.getSystemInfo({ |
||||||
|
success: (res) => { |
||||||
|
const isAndroid = res.platform === 'android' |
||||||
|
const isDevtools = res.platform === 'devtools' |
||||||
|
this.setData({ |
||||||
|
ios: !isAndroid, |
||||||
|
innerPaddingRight: `padding-right: ${res.windowWidth - rect.left}px`, |
||||||
|
leftWidth: `width: ${res.windowWidth - rect.left }px`, |
||||||
|
safeAreaTop: isDevtools || isAndroid ? `height: calc(var(--height) + ${res.safeArea.top}px); padding-top: ${res.safeArea.top}px` : `` |
||||||
|
}) |
||||||
|
} |
||||||
|
}) |
||||||
|
}, |
||||||
|
}, |
||||||
|
/** |
||||||
|
* 组件的方法列表 |
||||||
|
*/ |
||||||
|
methods: { |
||||||
|
_showChange(show: boolean) { |
||||||
|
const animated = this.data.animated |
||||||
|
let displayStyle = '' |
||||||
|
if (animated) { |
||||||
|
displayStyle = `opacity: ${ |
||||||
|
show ? '1' : '0' |
||||||
|
};transition:opacity 0.5s;` |
||||||
|
} else { |
||||||
|
displayStyle = `display: ${show ? '' : 'none'}` |
||||||
|
} |
||||||
|
this.setData({ |
||||||
|
displayStyle |
||||||
|
}) |
||||||
|
}, |
||||||
|
back() { |
||||||
|
const data = this.data |
||||||
|
if (data.delta) { |
||||||
|
wx.navigateBack({ |
||||||
|
delta: data.delta |
||||||
|
}) |
||||||
|
} |
||||||
|
this.triggerEvent('back', { delta: data.delta }, {}) |
||||||
|
} |
||||||
|
}, |
||||||
|
}) |
@ -0,0 +1,64 @@ |
|||||||
|
<view class="weui-navigation-bar {{extClass}}"> |
||||||
|
<view class="weui-navigation-bar__inner {{ios ? 'ios' : 'android'}}" style="color: {{color}}; background: {{background}}; {{displayStyle}}; {{innerPaddingRight}}; {{safeAreaTop}};"> |
||||||
|
|
||||||
|
<!-- 左侧按钮 --> |
||||||
|
<view class='weui-navigation-bar__left' style="{{leftWidth}};"> |
||||||
|
<block wx:if="{{back || homeButton}}"> |
||||||
|
<!-- 返回上一页 --> |
||||||
|
<block wx:if="{{back}}"> |
||||||
|
<view class="weui-navigation-bar__buttons weui-navigation-bar__buttons_goback"> |
||||||
|
<view |
||||||
|
bindtap="back" |
||||||
|
class="weui-navigation-bar__btn_goback_wrapper" |
||||||
|
hover-class="weui-active" |
||||||
|
hover-stay-time="100" |
||||||
|
aria-role="button" |
||||||
|
aria-label="返回" |
||||||
|
> |
||||||
|
<view class="weui-navigation-bar__button weui-navigation-bar__btn_goback"></view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</block> |
||||||
|
<!-- 返回首页 --> |
||||||
|
<block wx:if="{{homeButton}}"> |
||||||
|
<view class="weui-navigation-bar__buttons weui-navigation-bar__buttons_home"> |
||||||
|
<view |
||||||
|
bindtap="home" |
||||||
|
class="weui-navigation-bar__btn_home_wrapper" |
||||||
|
hover-class="weui-active" |
||||||
|
aria-role="button" |
||||||
|
aria-label="首页" |
||||||
|
> |
||||||
|
<view class="weui-navigation-bar__button weui-navigation-bar__btn_home"></view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</block> |
||||||
|
</block> |
||||||
|
<block wx:else> |
||||||
|
<slot name="left"></slot> |
||||||
|
</block> |
||||||
|
</view> |
||||||
|
|
||||||
|
<!-- 标题 --> |
||||||
|
<view class='weui-navigation-bar__center'> |
||||||
|
<view wx:if="{{loading}}" class="weui-navigation-bar__loading" aria-role="alert"> |
||||||
|
<view |
||||||
|
class="weui-loading" |
||||||
|
aria-role="img" |
||||||
|
aria-label="加载中" |
||||||
|
></view> |
||||||
|
</view> |
||||||
|
<block wx:if="{{title}}"> |
||||||
|
<text>{{title}}</text> |
||||||
|
</block> |
||||||
|
<block wx:else> |
||||||
|
<slot name="center"></slot> |
||||||
|
</block> |
||||||
|
</view> |
||||||
|
|
||||||
|
<!-- 右侧留空 --> |
||||||
|
<view class='weui-navigation-bar__right'> |
||||||
|
<slot name="right"></slot> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</view> |
@ -0,0 +1,5 @@ |
|||||||
|
{ |
||||||
|
"usingComponents": { |
||||||
|
"navigation-bar": "/components/navigation-bar/navigation-bar" |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,62 @@ |
|||||||
|
/**index.scss**/ |
||||||
|
page { |
||||||
|
height: 100vh; |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
} |
||||||
|
.scrollarea { |
||||||
|
flex: 1; |
||||||
|
overflow-y: hidden; |
||||||
|
} |
||||||
|
|
||||||
|
.userinfo { |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
align-items: center; |
||||||
|
color: #aaa; |
||||||
|
width: 80%; |
||||||
|
} |
||||||
|
|
||||||
|
.userinfo-avatar { |
||||||
|
overflow: hidden; |
||||||
|
width: 128rpx; |
||||||
|
height: 128rpx; |
||||||
|
margin: 20rpx; |
||||||
|
border-radius: 50%; |
||||||
|
} |
||||||
|
|
||||||
|
.usermotto { |
||||||
|
margin-top: 200px; |
||||||
|
} |
||||||
|
|
||||||
|
.avatar-wrapper { |
||||||
|
padding: 0; |
||||||
|
width: 56px !important; |
||||||
|
border-radius: 8px; |
||||||
|
margin-top: 40px; |
||||||
|
margin-bottom: 40px; |
||||||
|
} |
||||||
|
|
||||||
|
.avatar { |
||||||
|
display: block; |
||||||
|
width: 56px; |
||||||
|
height: 56px; |
||||||
|
} |
||||||
|
|
||||||
|
.nickname-wrapper { |
||||||
|
display: flex; |
||||||
|
width: 100%; |
||||||
|
padding: 16px; |
||||||
|
box-sizing: border-box; |
||||||
|
border-top: .5px solid rgba(0, 0, 0, 0.1); |
||||||
|
border-bottom: .5px solid rgba(0, 0, 0, 0.1); |
||||||
|
color: black; |
||||||
|
} |
||||||
|
|
||||||
|
.nickname-label { |
||||||
|
width: 105px; |
||||||
|
} |
||||||
|
|
||||||
|
.nickname-input { |
||||||
|
flex: 1; |
||||||
|
} |
@ -0,0 +1,54 @@ |
|||||||
|
// index.ts
|
||||||
|
// 获取应用实例
|
||||||
|
const app = getApp<IAppOption>() |
||||||
|
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0' |
||||||
|
|
||||||
|
Component({ |
||||||
|
data: { |
||||||
|
motto: 'Hello World', |
||||||
|
userInfo: { |
||||||
|
avatarUrl: defaultAvatarUrl, |
||||||
|
nickName: '', |
||||||
|
}, |
||||||
|
hasUserInfo: false, |
||||||
|
canIUseGetUserProfile: wx.canIUse('getUserProfile'), |
||||||
|
canIUseNicknameComp: wx.canIUse('input.type.nickname'), |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
// 事件处理函数
|
||||||
|
bindViewTap() { |
||||||
|
wx.navigateTo({ |
||||||
|
url: '../logs/logs', |
||||||
|
}) |
||||||
|
}, |
||||||
|
onChooseAvatar(e: any) { |
||||||
|
const { avatarUrl } = e.detail |
||||||
|
const { nickName } = this.data.userInfo |
||||||
|
this.setData({ |
||||||
|
"userInfo.avatarUrl": avatarUrl, |
||||||
|
hasUserInfo: nickName && avatarUrl && avatarUrl !== defaultAvatarUrl, |
||||||
|
}) |
||||||
|
}, |
||||||
|
onInputChange(e: any) { |
||||||
|
const nickName = e.detail.value |
||||||
|
const { avatarUrl } = this.data.userInfo |
||||||
|
this.setData({ |
||||||
|
"userInfo.nickName": nickName, |
||||||
|
hasUserInfo: nickName && avatarUrl && avatarUrl !== defaultAvatarUrl, |
||||||
|
}) |
||||||
|
}, |
||||||
|
getUserProfile() { |
||||||
|
// 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
|
||||||
|
wx.getUserProfile({ |
||||||
|
desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
|
||||||
|
success: (res) => { |
||||||
|
console.log(res) |
||||||
|
this.setData({ |
||||||
|
userInfo: res.userInfo, |
||||||
|
hasUserInfo: true |
||||||
|
}) |
||||||
|
} |
||||||
|
}) |
||||||
|
}, |
||||||
|
}, |
||||||
|
}) |
@ -0,0 +1,28 @@ |
|||||||
|
<!--index.wxml--> |
||||||
|
<navigation-bar title="Weixin" back="{{false}}" color="black" background="#FFF"></navigation-bar> |
||||||
|
<scroll-view class="scrollarea" scroll-y type="list"> |
||||||
|
<view class="container"> |
||||||
|
<view class="userinfo"> |
||||||
|
<block wx:if="{{canIUseNicknameComp && !hasUserInfo}}"> |
||||||
|
<button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar"> |
||||||
|
<image class="avatar" src="{{userInfo.avatarUrl}}"></image> |
||||||
|
</button> |
||||||
|
<view class="nickname-wrapper"> |
||||||
|
<text class="nickname-label">昵称</text> |
||||||
|
<input type="nickname" class="nickname-input" placeholder="请输入昵称" bind:change="onInputChange" /> |
||||||
|
</view> |
||||||
|
</block> |
||||||
|
<block wx:elif="{{!hasUserInfo}}"> |
||||||
|
<button wx:if="{{canIUseGetUserProfile}}" bindtap="getUserProfile"> 获取头像昵称 </button> |
||||||
|
<view wx:else> 请使用2.10.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> |
||||||
|
</scroll-view> |
@ -0,0 +1,5 @@ |
|||||||
|
{ |
||||||
|
"usingComponents": { |
||||||
|
"navigation-bar": "/components/navigation-bar/navigation-bar" |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
page { |
||||||
|
height: 100vh; |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
} |
||||||
|
.scrollarea { |
||||||
|
flex: 1; |
||||||
|
overflow-y: hidden; |
||||||
|
} |
||||||
|
.log-item { |
||||||
|
margin-top: 20rpx; |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
.log-item:last-child { |
||||||
|
padding-bottom: env(safe-area-inset-bottom); |
||||||
|
} |
@ -0,0 +1,21 @@ |
|||||||
|
// logs.ts
|
||||||
|
// const util = require('../../utils/util.js')
|
||||||
|
import { formatTime } from '../../utils/util' |
||||||
|
|
||||||
|
Component({ |
||||||
|
data: { |
||||||
|
logs: [], |
||||||
|
}, |
||||||
|
lifetimes: { |
||||||
|
attached() { |
||||||
|
this.setData({ |
||||||
|
logs: (wx.getStorageSync('logs') || []).map((log: string) => { |
||||||
|
return { |
||||||
|
date: formatTime(new Date(log)), |
||||||
|
timeStamp: log |
||||||
|
} |
||||||
|
}), |
||||||
|
}) |
||||||
|
} |
||||||
|
}, |
||||||
|
}) |
@ -0,0 +1,7 @@ |
|||||||
|
<!--logs.wxml--> |
||||||
|
<navigation-bar title="查看启动日志" back="{{true}}" color="black" background="#FFF"></navigation-bar> |
||||||
|
<scroll-view class="scrollarea" scroll-y type="list"> |
||||||
|
<block wx:for="{{logs}}" wx:key="timeStamp" wx:for-item="log"> |
||||||
|
<view class="log-item">{{index + 1}}. {{log.date}}</view> |
||||||
|
</block> |
||||||
|
</scroll-view> |
@ -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,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,74 @@ |
|||||||
|
/*! ***************************************************************************** |
||||||
|
Copyright (c) 2021 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]> |
||||||
|
} |
||||||
|
|
||||||
|
declare const console: WechatMiniprogram.Console |
||||||
|
declare const wx: WechatMiniprogram.Wx |
||||||
|
/** 引入模块。返回模块通过 `module.exports` 或 `exports` 暴露的接口。 */ |
||||||
|
declare function require( |
||||||
|
/** 需要引入模块文件相对于当前文件的相对路径,或 npm 模块名,或 npm 模块路径。不支持绝对路径 */ |
||||||
|
module: string |
||||||
|
): any |
||||||
|
/** 引入插件。返回插件通过 `main` 暴露的接口。 */ |
||||||
|
declare function requirePlugin( |
||||||
|
/** 需要引入的插件的 alias */ |
||||||
|
module: string |
||||||
|
): any |
||||||
|
/** 插件引入当前使用者小程序。返回使用者小程序通过 [插件配置中 `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 |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,270 @@ |
|||||||
|
/*! ***************************************************************************** |
||||||
|
Copyright (c) 2021 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 = |
||||||
|
| 1001 |
||||||
|
| 1005 |
||||||
|
| 1006 |
||||||
|
| 1007 |
||||||
|
| 1008 |
||||||
|
| 1011 |
||||||
|
| 1012 |
||||||
|
| 1013 |
||||||
|
| 1014 |
||||||
|
| 1017 |
||||||
|
| 1019 |
||||||
|
| 1020 |
||||||
|
| 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 |
||||||
|
| 1056 |
||||||
|
| 1057 |
||||||
|
| 1058 |
||||||
|
| 1059 |
||||||
|
| 1064 |
||||||
|
| 1067 |
||||||
|
| 1069 |
||||||
|
| 1071 |
||||||
|
| 1072 |
||||||
|
| 1073 |
||||||
|
| 1074 |
||||||
|
| 1077 |
||||||
|
| 1078 |
||||||
|
| 1079 |
||||||
|
| 1081 |
||||||
|
| 1082 |
||||||
|
| 1084 |
||||||
|
| 1089 |
||||||
|
| 1090 |
||||||
|
| 1091 |
||||||
|
| 1092 |
||||||
|
| 1095 |
||||||
|
| 1096 |
||||||
|
| 1097 |
||||||
|
| 1099 |
||||||
|
| 1102 |
||||||
|
| 1124 |
||||||
|
| 1125 |
||||||
|
| 1126 |
||||||
|
| 1129 |
||||||
|
|
||||||
|
interface LaunchShowOption { |
||||||
|
/** 打开小程序的路径 */ |
||||||
|
path: string |
||||||
|
/** 打开小程序的query */ |
||||||
|
query: IAnyObject |
||||||
|
/** 打开小程序的场景值 |
||||||
|
* - 1001:发现栏小程序主入口,「最近使用」列表(基础库2.2.4版本起包含「我的小程序」列表) |
||||||
|
* - 1005:微信首页顶部搜索框的搜索结果页 |
||||||
|
* - 1006:发现栏小程序主入口搜索框的搜索结果页 |
||||||
|
* - 1007:单人聊天会话中的小程序消息卡片 |
||||||
|
* - 1008:群聊会话中的小程序消息卡片 |
||||||
|
* - 1011:扫描二维码 |
||||||
|
* - 1012:长按图片识别二维码 |
||||||
|
* - 1013:扫描手机相册中选取的二维码 |
||||||
|
* - 1014:小程序模板消息 |
||||||
|
* - 1017:前往小程序体验版的入口页 |
||||||
|
* - 1019:微信钱包(微信客户端7.0.0版本改为支付入口) |
||||||
|
* - 1020:公众号 profile 页相关小程序列表 |
||||||
|
* - 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:搜一搜的结果页 |
||||||
|
* - 1056:聊天顶部音乐播放器右上角菜单 |
||||||
|
* - 1057:钱包中的银行卡详情页 |
||||||
|
* - 1058:公众号文章 |
||||||
|
* - 1059:体验版小程序绑定邀请页 |
||||||
|
* - 1064:微信首页连Wi-Fi状态栏 |
||||||
|
* - 1067:公众号文章广告 |
||||||
|
* - 1069:移动应用 |
||||||
|
* - 1071:钱包中的银行卡列表页 |
||||||
|
* - 1072:二维码收款页面 |
||||||
|
* - 1073:客服消息列表下发的小程序消息卡片 |
||||||
|
* - 1074:公众号会话下发的小程序消息卡片 |
||||||
|
* - 1077:摇周边 |
||||||
|
* - 1078:微信连Wi-Fi成功提示页 |
||||||
|
* - 1079:微信游戏中心 |
||||||
|
* - 1081:客服消息下发的文字链 |
||||||
|
* - 1082:公众号会话下发的文字链 |
||||||
|
* - 1084:朋友圈广告原生页 |
||||||
|
* - 1089:微信聊天主界面下拉,「最近使用」栏(基础库2.2.4版本起包含「我的小程序」栏) |
||||||
|
* - 1090:长按小程序右上角菜单唤出最近使用历史 |
||||||
|
* - 1091:公众号文章商品卡片 |
||||||
|
* - 1092:城市服务入口 |
||||||
|
* - 1095:小程序广告组件 |
||||||
|
* - 1096:聊天记录 |
||||||
|
* - 1097:微信支付签约页 |
||||||
|
* - 1099:页面内嵌插件 |
||||||
|
* - 1102:公众号 profile 页服务预览 |
||||||
|
* - 1124:扫“一物一码”打开小程序 |
||||||
|
* - 1125:长按图片识别“一物一码” |
||||||
|
* - 1126:扫描手机相册中选取的“一物一码” |
||||||
|
* - 1129:微信爬虫访问 [详情](https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/sitemap.html)
|
||||||
|
*/ |
||||||
|
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 = IAnyObject>(opts?: GetAppOption): Instance<T> |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
declare let App: WechatMiniprogram.App.Constructor |
||||||
|
declare let getApp: WechatMiniprogram.App.GetApp |
@ -0,0 +1,68 @@ |
|||||||
|
/*! ***************************************************************************** |
||||||
|
Copyright (c) 2021 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,924 @@ |
|||||||
|
/*! ***************************************************************************** |
||||||
|
Copyright (c) 2021 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 |
||||||
|
} |
||||||
|
|
||||||
|
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: 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,636 @@ |
|||||||
|
/*! ***************************************************************************** |
||||||
|
Copyright (c) 2021 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 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 |
||||||
|
getOpenerEventChannel(): EventChannel |
||||||
|
} |
||||||
|
|
||||||
|
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 |
||||||
|
} |
||||||
|
} |
||||||
|
/** 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 |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,259 @@ |
|||||||
|
/*! ***************************************************************************** |
||||||
|
Copyright (c) 2021 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>) & |
||||||
|
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 | 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 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' | string |
||||||
|
/** 如果 `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 |
Loading…
Reference in new issue