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