Repository: wechat-miniprogram/miniprogram-demo Branch: master Commit: 2a2647737777 Files: 2811 Total size: 5.4 MB Directory structure: gitextract_rzb6xc3e/ ├── .eslintignore ├── .eslintrc.js ├── .github/ │ └── workflows/ │ └── pr-lint-check.yml ├── .gitignore ├── .gitmodules ├── LICENSE ├── README.md ├── build/ │ └── ci.js ├── cloudfunctions/ │ ├── ARDemo/ │ │ ├── README.md │ │ ├── cloud-functions-tools/ │ │ │ ├── bin/ │ │ │ │ └── svrkit-utils │ │ │ ├── cli/ │ │ │ │ ├── svrkit-utils-template.js │ │ │ │ └── svrkit-utils.js │ │ │ ├── package.json │ │ │ └── test/ │ │ │ └── svrkit-utils/ │ │ │ └── example/ │ │ │ ├── bundle.js │ │ │ ├── proto/ │ │ │ │ ├── demo.proto │ │ │ │ ├── mmbizsafecenter.proto │ │ │ │ └── mmbizwxatmpcode.proto │ │ │ ├── proto-utils.js │ │ │ ├── svrkit-utils.js │ │ │ ├── svrkit-utils.static.js │ │ │ ├── svrkit-utils.static.json │ │ │ └── svrkit.config.js │ │ ├── config.json │ │ ├── index.js │ │ ├── package.json │ │ ├── proto/ │ │ │ └── mmbizwxaintparDemo.proto │ │ ├── svrkit-utils.js │ │ ├── svrkit-utils.static.js │ │ ├── svrkit-utils.static.json │ │ ├── svrkit.config.js │ │ └── wx-server-sdk-wxg-service/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── index.js │ │ └── package.json │ ├── getServerDataDemo/ │ │ ├── index.js │ │ └── package.json │ ├── getTempFileURL/ │ │ ├── index.js │ │ └── package.json │ └── login/ │ ├── index.js │ └── package.json ├── gulpfile.js ├── miniprogram/ │ ├── _commons/ │ │ └── 0.js │ ├── app-bar/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── app-darkmode.json │ ├── app.js │ ├── app.json │ ├── app.wxss │ ├── assets/ │ │ └── animation/ │ │ ├── basic-animation.json │ │ ├── gltf-animation.json │ │ ├── last-record-anchor-animation.json │ │ └── miku-kawaii-animation.json │ ├── common/ │ │ ├── common-skyline.wxss │ │ ├── common.wxss │ │ ├── foot.wxml │ │ ├── head.wxml │ │ ├── index.wxss │ │ ├── lib/ │ │ │ └── weui.wxss │ │ └── reset.wxss │ ├── component/ │ │ └── navigation-bar/ │ │ ├── navigation-bar.js │ │ ├── navigation-bar.json │ │ ├── navigation-bar.wxml │ │ └── navigation-bar.wxss │ ├── components/ │ │ ├── app-bar-course/ │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.ts │ │ │ └── index.wxml │ │ ├── grid-tile/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── navigation-bar/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── page-scroll/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── popup/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── config.js │ ├── demo.theme.json │ ├── package.json │ ├── packageAPI/ │ │ ├── components/ │ │ │ └── tdesign-miniprogram/ │ │ │ ├── cell/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── cell.d.ts │ │ │ │ ├── cell.js │ │ │ │ ├── cell.json │ │ │ │ ├── cell.wxml │ │ │ │ ├── cell.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── cell-group/ │ │ │ │ ├── cell-group.d.ts │ │ │ │ ├── cell-group.js │ │ │ │ ├── cell-group.json │ │ │ │ ├── cell-group.wxml │ │ │ │ ├── cell-group.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── col/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── col.d.ts │ │ │ │ ├── col.js │ │ │ │ ├── col.json │ │ │ │ ├── col.wxml │ │ │ │ ├── col.wxs │ │ │ │ ├── col.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── collapse/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── collapse.d.ts │ │ │ │ ├── collapse.js │ │ │ │ ├── collapse.json │ │ │ │ ├── collapse.wxml │ │ │ │ ├── collapse.wxss │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── collapse-panel/ │ │ │ │ ├── collapse-panel.d.ts │ │ │ │ ├── collapse-panel.js │ │ │ │ ├── collapse-panel.json │ │ │ │ ├── collapse-panel.wxml │ │ │ │ ├── collapse-panel.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── common/ │ │ │ │ ├── bus.d.ts │ │ │ │ ├── bus.js │ │ │ │ ├── common.d.ts │ │ │ │ ├── common.js │ │ │ │ ├── component.d.ts │ │ │ │ ├── component.js │ │ │ │ ├── config.d.ts │ │ │ │ ├── config.js │ │ │ │ ├── index.wxss │ │ │ │ ├── shared/ │ │ │ │ │ ├── calendar/ │ │ │ │ │ │ ├── index.d.ts │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── type.d.ts │ │ │ │ │ │ └── type.js │ │ │ │ │ ├── color-picker/ │ │ │ │ │ │ ├── cmyk.d.ts │ │ │ │ │ │ ├── cmyk.js │ │ │ │ │ │ ├── color.d.ts │ │ │ │ │ │ ├── color.js │ │ │ │ │ │ ├── gradient.d.ts │ │ │ │ │ │ ├── gradient.js │ │ │ │ │ │ ├── index.d.ts │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── date.d.ts │ │ │ │ │ └── date.js │ │ │ │ ├── src/ │ │ │ │ │ ├── control.d.ts │ │ │ │ │ ├── control.js │ │ │ │ │ ├── flatTool.d.ts │ │ │ │ │ ├── flatTool.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ ├── index.js │ │ │ │ │ ├── instantiationDecorator.d.ts │ │ │ │ │ ├── instantiationDecorator.js │ │ │ │ │ ├── superComponent.d.ts │ │ │ │ │ └── superComponent.js │ │ │ │ ├── style/ │ │ │ │ │ ├── _variables.wxss │ │ │ │ │ ├── base.wxss │ │ │ │ │ ├── icons.wxss │ │ │ │ │ ├── index.wxss │ │ │ │ │ ├── mixins/ │ │ │ │ │ │ ├── _clearfix.wxss │ │ │ │ │ │ ├── _cursor.wxss │ │ │ │ │ │ ├── _ellipsis.wxss │ │ │ │ │ │ ├── _hairline.wxss │ │ │ │ │ │ └── _index.wxss │ │ │ │ │ ├── theme/ │ │ │ │ │ │ ├── _components.wxss │ │ │ │ │ │ ├── _dark.wxss │ │ │ │ │ │ ├── _font.wxss │ │ │ │ │ │ ├── _index.wxss │ │ │ │ │ │ ├── _light.wxss │ │ │ │ │ │ ├── _radius.wxss │ │ │ │ │ │ └── _spacer.wxss │ │ │ │ │ └── utilities/ │ │ │ │ │ ├── _animation.wxss │ │ │ │ │ ├── _float.wxss │ │ │ │ │ └── _index.wxss │ │ │ │ ├── template/ │ │ │ │ │ ├── badge.wxml │ │ │ │ │ ├── button.wxml │ │ │ │ │ ├── icon.wxml │ │ │ │ │ └── image.wxml │ │ │ │ ├── utils.d.ts │ │ │ │ ├── utils.js │ │ │ │ ├── utils.wxs │ │ │ │ ├── version.d.ts │ │ │ │ ├── version.js │ │ │ │ ├── wechat.d.ts │ │ │ │ └── wechat.js │ │ │ ├── count-down/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── count-down.d.ts │ │ │ │ ├── count-down.js │ │ │ │ ├── count-down.json │ │ │ │ ├── count-down.wxml │ │ │ │ ├── count-down.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ ├── type.js │ │ │ │ ├── utils.d.ts │ │ │ │ └── utils.js │ │ │ ├── icon/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── icon.d.ts │ │ │ │ ├── icon.js │ │ │ │ ├── icon.json │ │ │ │ ├── icon.wxml │ │ │ │ ├── icon.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── image/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── image-info.json │ │ │ │ ├── image.d.ts │ │ │ │ ├── image.js │ │ │ │ ├── image.json │ │ │ │ ├── image.wxml │ │ │ │ ├── image.wxss │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── loading/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── loading.d.ts │ │ │ │ ├── loading.js │ │ │ │ ├── loading.json │ │ │ │ ├── loading.wxml │ │ │ │ ├── loading.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── mixins/ │ │ │ │ ├── page-scroll.d.ts │ │ │ │ ├── page-scroll.js │ │ │ │ ├── theme-change.d.ts │ │ │ │ ├── theme-change.js │ │ │ │ ├── touch.d.ts │ │ │ │ ├── touch.js │ │ │ │ ├── transition.d.ts │ │ │ │ ├── transition.js │ │ │ │ ├── using-custom-navbar.d.ts │ │ │ │ └── using-custom-navbar.js │ │ │ ├── navbar/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── navbar.d.ts │ │ │ │ ├── navbar.js │ │ │ │ ├── navbar.json │ │ │ │ ├── navbar.wxml │ │ │ │ ├── navbar.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── row/ │ │ │ │ ├── README.md │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── row.d.ts │ │ │ │ ├── row.js │ │ │ │ ├── row.json │ │ │ │ ├── row.wxml │ │ │ │ ├── row.wxs │ │ │ │ ├── row.wxss │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── search/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── search.d.ts │ │ │ │ ├── search.js │ │ │ │ ├── search.json │ │ │ │ ├── search.wxml │ │ │ │ ├── search.wxs │ │ │ │ ├── search.wxss │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── tag/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── tag.d.ts │ │ │ │ ├── tag.js │ │ │ │ ├── tag.json │ │ │ │ ├── tag.wxml │ │ │ │ ├── tag.wxss │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ └── toast/ │ │ │ ├── README.en-US.md │ │ │ ├── README.md │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── props.d.ts │ │ │ ├── props.js │ │ │ ├── toast.d.ts │ │ │ ├── toast.js │ │ │ ├── toast.json │ │ │ ├── toast.wxml │ │ │ ├── toast.wxss │ │ │ ├── type.d.ts │ │ │ └── type.js │ │ └── pages/ │ │ ├── ai/ │ │ │ ├── mobilenet/ │ │ │ │ ├── classify.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.less │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── mobilenet_int8/ │ │ │ │ ├── classify.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.less │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── style-trans/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.less │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── api/ │ │ │ ├── choose-address/ │ │ │ │ ├── choose-address.js │ │ │ │ ├── choose-address.json │ │ │ │ ├── choose-address.wxml │ │ │ │ └── choose-address.wxss │ │ │ ├── choose-invoice-title/ │ │ │ │ ├── choose-invoice-title.js │ │ │ │ ├── choose-invoice-title.json │ │ │ │ ├── choose-invoice-title.wxml │ │ │ │ └── choose-invoice-title.wxss │ │ │ ├── custom-message/ │ │ │ │ ├── custom-message.js │ │ │ │ ├── custom-message.json │ │ │ │ ├── custom-message.wxml │ │ │ │ └── custom-message.wxss │ │ │ ├── get-user-info/ │ │ │ │ ├── get-user-info.js │ │ │ │ ├── get-user-info.json │ │ │ │ ├── get-user-info.wxml │ │ │ │ └── get-user-info.wxss │ │ │ ├── jump/ │ │ │ │ ├── jump.js │ │ │ │ ├── jump.json │ │ │ │ ├── jump.wxml │ │ │ │ └── jump.wxss │ │ │ ├── login/ │ │ │ │ ├── login.js │ │ │ │ ├── login.json │ │ │ │ ├── login.wxml │ │ │ │ └── login.wxss │ │ │ ├── official-account/ │ │ │ │ ├── official-account.js │ │ │ │ ├── official-account.json │ │ │ │ ├── official-account.wxml │ │ │ │ └── official-account.wxss │ │ │ ├── request-payment/ │ │ │ │ ├── request-payment.js │ │ │ │ ├── request-payment.json │ │ │ │ ├── request-payment.wxml │ │ │ │ └── request-payment.wxss │ │ │ ├── setting/ │ │ │ │ ├── setting.js │ │ │ │ ├── setting.json │ │ │ │ ├── setting.wxml │ │ │ │ └── setting.wxss │ │ │ ├── share/ │ │ │ │ ├── share.js │ │ │ │ ├── share.json │ │ │ │ ├── share.wxml │ │ │ │ └── share.wxss │ │ │ ├── share-button/ │ │ │ │ ├── share-button.js │ │ │ │ ├── share-button.json │ │ │ │ ├── share-button.wxml │ │ │ │ └── share-button.wxss │ │ │ ├── soter-authentication/ │ │ │ │ ├── soter-authentication.js │ │ │ │ ├── soter-authentication.json │ │ │ │ ├── soter-authentication.wxml │ │ │ │ └── soter-authentication.wxss │ │ │ └── subscribe-message/ │ │ │ ├── subscribe-message.js │ │ │ ├── subscribe-message.json │ │ │ ├── subscribe-message.wxml │ │ │ └── subscribe-message.wxss │ │ ├── ar/ │ │ │ ├── 2dmarker-ar/ │ │ │ │ ├── 2dmarker-ar.js │ │ │ │ ├── 2dmarker-ar.json │ │ │ │ ├── 2dmarker-ar.wxml │ │ │ │ └── 2dmarker-ar.wxss │ │ │ ├── 3dmarker-ar/ │ │ │ │ ├── 3dmarker-ar.js │ │ │ │ ├── 3dmarker-ar.json │ │ │ │ ├── 3dmarker-ar.wxml │ │ │ │ ├── 3dmarker-ar.wxss │ │ │ │ ├── Components/ │ │ │ │ │ ├── arModelComponent.js │ │ │ │ │ ├── arModelComponent.json │ │ │ │ │ ├── arModelComponent.wxml │ │ │ │ │ └── arModelComponent.wxss │ │ │ │ ├── proto/ │ │ │ │ │ ├── arModelProto.js │ │ │ │ │ └── arModelProto.proto │ │ │ │ └── protobuf/ │ │ │ │ ├── protobuf.js │ │ │ │ └── src/ │ │ │ │ ├── EventEmitter.js │ │ │ │ ├── asPromise.js │ │ │ │ ├── base64.js │ │ │ │ ├── common.js │ │ │ │ ├── converter.js │ │ │ │ ├── decoder.js │ │ │ │ ├── encoder.js │ │ │ │ ├── enum.js │ │ │ │ ├── field.js │ │ │ │ ├── float.js │ │ │ │ ├── inquire.js │ │ │ │ ├── long.js │ │ │ │ ├── longBits.js │ │ │ │ ├── mapField.js │ │ │ │ ├── message.js │ │ │ │ ├── method.js │ │ │ │ ├── namespace.js │ │ │ │ ├── object.js │ │ │ │ ├── oneof.js │ │ │ │ ├── parse.js │ │ │ │ ├── path.js │ │ │ │ ├── pool.js │ │ │ │ ├── reader.js │ │ │ │ ├── root.js │ │ │ │ ├── roots.js │ │ │ │ ├── rpc/ │ │ │ │ │ └── service.js │ │ │ │ ├── service.js │ │ │ │ ├── tokenize.js │ │ │ │ ├── type.js │ │ │ │ ├── types.js │ │ │ │ ├── utf8.js │ │ │ │ ├── util.js │ │ │ │ ├── verifier.js │ │ │ │ ├── wrappers.js │ │ │ │ └── writer.js │ │ │ ├── behavior/ │ │ │ │ ├── behavior-ar.js │ │ │ │ ├── behavior-three-shoe.js │ │ │ │ ├── behavior-three.js │ │ │ │ └── behavior-xrframe.js │ │ │ ├── body-detect/ │ │ │ │ ├── behavior.js │ │ │ │ ├── body-detect.js │ │ │ │ ├── body-detect.json │ │ │ │ ├── body-detect.wxml │ │ │ │ ├── body-detect.wxss │ │ │ │ └── yuvBehavior.js │ │ │ ├── body-detect-3d/ │ │ │ │ ├── body-detect-3d.js │ │ │ │ ├── body-detect-3d.json │ │ │ │ ├── body-detect-3d.wxml │ │ │ │ └── body-detect-3d.wxss │ │ │ ├── cameraBuffer-detect/ │ │ │ │ ├── behavior.js │ │ │ │ ├── cameraBuffer-detect.js │ │ │ │ ├── cameraBuffer-detect.json │ │ │ │ ├── cameraBuffer-detect.less │ │ │ │ ├── cameraBuffer-detect.wxml │ │ │ │ ├── cameraBuffer-detect.wxss │ │ │ │ ├── cameraBufferBehavior.js │ │ │ │ └── yuvBehavior.js │ │ │ ├── cameraBuffer-jpg/ │ │ │ │ ├── cameraBuffer-jpg.js │ │ │ │ ├── cameraBuffer-jpg.json │ │ │ │ ├── cameraBuffer-jpg.wxml │ │ │ │ └── cameraBuffer-jpg.wxss │ │ │ ├── components/ │ │ │ │ ├── xr-frame/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ └── xr-frame-render/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── depth-detect/ │ │ │ │ ├── behavior.js │ │ │ │ ├── depth-detect.js │ │ │ │ ├── depth-detect.json │ │ │ │ ├── depth-detect.wxml │ │ │ │ ├── depth-detect.wxss │ │ │ │ ├── depthBehavior.js │ │ │ │ └── yuvBehavior.js │ │ │ ├── face-detect/ │ │ │ │ ├── behavior.js │ │ │ │ ├── face-detect.js │ │ │ │ ├── face-detect.json │ │ │ │ ├── face-detect.wxml │ │ │ │ ├── face-detect.wxss │ │ │ │ └── yuvBehavior.js │ │ │ ├── face-detect-3d/ │ │ │ │ ├── face-detect-3d.js │ │ │ │ ├── face-detect-3d.json │ │ │ │ ├── face-detect-3d.wxml │ │ │ │ └── face-detect-3d.wxss │ │ │ ├── face-detect-3d-glasses/ │ │ │ │ ├── face-detect-3d-glasses.js │ │ │ │ ├── face-detect-3d-glasses.json │ │ │ │ ├── face-detect-3d-glasses.wxml │ │ │ │ └── face-detect-3d-glasses.wxss │ │ │ ├── gaussian-splatting/ │ │ │ │ ├── gaussian-splatting-ar.js │ │ │ │ ├── gaussian-splatting-ar.json │ │ │ │ ├── gaussian-splatting-ar.wxml │ │ │ │ ├── gaussian-splatting-ar.wxss │ │ │ │ ├── gaussian-splatting.js │ │ │ │ ├── gaussian-splatting.json │ │ │ │ ├── gaussian-splatting.wxml │ │ │ │ ├── gaussian-splatting.wxss │ │ │ │ ├── loaders/ │ │ │ │ │ ├── ply/ │ │ │ │ │ │ └── ply-loader.js │ │ │ │ │ ├── splat/ │ │ │ │ │ │ └── splat-loader.js │ │ │ │ │ └── util-loader.js │ │ │ │ ├── util/ │ │ │ │ │ ├── gl-matrix-min.js │ │ │ │ │ └── render-xrframe.js │ │ │ │ └── webgl2/ │ │ │ │ ├── camera-webGL.js │ │ │ │ ├── cubeInstance-webGL.js │ │ │ │ ├── shaders/ │ │ │ │ │ ├── splat_fragment.glsl.js │ │ │ │ │ ├── splat_rt_fragment.glsl.js │ │ │ │ │ ├── splat_rt_vertex.glsl.js │ │ │ │ │ ├── splat_vertex.glsl.js │ │ │ │ │ ├── yuv_fragment.glsl.js │ │ │ │ │ └── yuv_vertex.glsl.js │ │ │ │ ├── splat-webGL.js │ │ │ │ └── yuv-webGL.js │ │ │ ├── hand-detect/ │ │ │ │ ├── behavior.js │ │ │ │ ├── hand-detect.js │ │ │ │ ├── hand-detect.json │ │ │ │ ├── hand-detect.wxml │ │ │ │ ├── hand-detect.wxss │ │ │ │ └── yuvBehavior.js │ │ │ ├── hand-detect-3d/ │ │ │ │ ├── hand-detect-3d.js │ │ │ │ ├── hand-detect-3d.json │ │ │ │ ├── hand-detect-3d.wxml │ │ │ │ └── hand-detect-3d.wxss │ │ │ ├── loaders/ │ │ │ │ ├── gltf-clone.js │ │ │ │ └── gltf-loader.js │ │ │ ├── ocr-detect/ │ │ │ │ ├── behavior.js │ │ │ │ ├── ocr-detect.js │ │ │ │ ├── ocr-detect.json │ │ │ │ ├── ocr-detect.wxml │ │ │ │ ├── ocr-detect.wxss │ │ │ │ └── yuvBehavior.js │ │ │ ├── osd-ar/ │ │ │ │ ├── behavior.js │ │ │ │ ├── osd-ar.js │ │ │ │ ├── osd-ar.json │ │ │ │ ├── osd-ar.wxml │ │ │ │ ├── osd-ar.wxss │ │ │ │ └── yuvBehavior.js │ │ │ ├── photo-body-detect/ │ │ │ │ ├── behavior.js │ │ │ │ ├── photo-body-detect.js │ │ │ │ ├── photo-body-detect.json │ │ │ │ ├── photo-body-detect.wxml │ │ │ │ ├── photo-body-detect.wxss │ │ │ │ └── yuvBehavior.js │ │ │ ├── photo-depth-detect/ │ │ │ │ ├── behavior.js │ │ │ │ ├── depthBehavior.js │ │ │ │ ├── photo-depth-detect.js │ │ │ │ ├── photo-depth-detect.json │ │ │ │ ├── photo-depth-detect.less │ │ │ │ ├── photo-depth-detect.wxml │ │ │ │ ├── photo-depth-detect.wxss │ │ │ │ └── yuvBehavior.js │ │ │ ├── photo-face-detect/ │ │ │ │ ├── behavior.js │ │ │ │ ├── photo-face-detect.js │ │ │ │ ├── photo-face-detect.json │ │ │ │ ├── photo-face-detect.wxml │ │ │ │ ├── photo-face-detect.wxss │ │ │ │ └── yuvBehavior.js │ │ │ ├── photo-hand-detect/ │ │ │ │ ├── behavior.js │ │ │ │ ├── photo-hand-detect.js │ │ │ │ ├── photo-hand-detect.json │ │ │ │ ├── photo-hand-detect.wxml │ │ │ │ ├── photo-hand-detect.wxss │ │ │ │ └── yuvBehavior.js │ │ │ ├── photo-idcard-detect/ │ │ │ │ ├── photo-idcard-detect.js │ │ │ │ ├── photo-idcard-detect.json │ │ │ │ ├── photo-idcard-detect.wxml │ │ │ │ └── photo-idcard-detect.wxss │ │ │ ├── photo-ocr-detect/ │ │ │ │ ├── behavior.js │ │ │ │ ├── photo-ocr-detect.js │ │ │ │ ├── photo-ocr-detect.json │ │ │ │ ├── photo-ocr-detect.wxml │ │ │ │ ├── photo-ocr-detect.wxss │ │ │ │ └── yuvBehavior.js │ │ │ ├── photo-shoe-detect/ │ │ │ │ ├── behavior.js │ │ │ │ ├── photo-shoe-detect.js │ │ │ │ ├── photo-shoe-detect.json │ │ │ │ ├── photo-shoe-detect.less │ │ │ │ ├── photo-shoe-detect.wxml │ │ │ │ ├── photo-shoe-detect.wxss │ │ │ │ └── yuvBehavior.js │ │ │ ├── plane-ar/ │ │ │ │ ├── behavior.js │ │ │ │ ├── plane-ar.js │ │ │ │ ├── plane-ar.json │ │ │ │ ├── plane-ar.wxml │ │ │ │ ├── plane-ar.wxss │ │ │ │ └── yuvBehavior.js │ │ │ ├── plane-ar-3dof/ │ │ │ │ ├── behavior.js │ │ │ │ ├── plane-ar-3dof.js │ │ │ │ ├── plane-ar-3dof.json │ │ │ │ ├── plane-ar-3dof.less │ │ │ │ ├── plane-ar-3dof.wxml │ │ │ │ ├── plane-ar-3dof.wxss │ │ │ │ └── yuvBehavior.js │ │ │ ├── plane-ar-v2/ │ │ │ │ ├── behavior.js │ │ │ │ ├── plane-ar-v2.js │ │ │ │ ├── plane-ar-v2.json │ │ │ │ ├── plane-ar-v2.wxml │ │ │ │ ├── plane-ar-v2.wxss │ │ │ │ └── yuvBehavior.js │ │ │ ├── plane-ar-v2-depth/ │ │ │ │ ├── behavior.js │ │ │ │ ├── depthBehavior.js │ │ │ │ ├── plane-ar-v2-depth.js │ │ │ │ ├── plane-ar-v2-depth.json │ │ │ │ ├── plane-ar-v2-depth.wxml │ │ │ │ ├── plane-ar-v2-depth.wxss │ │ │ │ └── yuvBehavior.js │ │ │ ├── plane-ar-v2-marker/ │ │ │ │ ├── behavior.js │ │ │ │ ├── plane-ar-v2-marker.js │ │ │ │ ├── plane-ar-v2-marker.json │ │ │ │ ├── plane-ar-v2-marker.wxml │ │ │ │ ├── plane-ar-v2-marker.wxss │ │ │ │ └── yuvBehavior.js │ │ │ ├── plane-ar-v2-options/ │ │ │ │ ├── plane-ar-v2-options.js │ │ │ │ ├── plane-ar-v2-options.json │ │ │ │ ├── plane-ar-v2-options.wxml │ │ │ │ └── plane-ar-v2-options.wxss │ │ │ ├── shoe-detect/ │ │ │ │ ├── shoe-detect.js │ │ │ │ ├── shoe-detect.json │ │ │ │ ├── shoe-detect.wxml │ │ │ │ └── shoe-detect.wxss │ │ │ ├── visionkit-basic/ │ │ │ │ ├── behavior.js │ │ │ │ ├── visionkit-basic.js │ │ │ │ ├── visionkit-basic.json │ │ │ │ ├── visionkit-basic.wxml │ │ │ │ ├── visionkit-basic.wxss │ │ │ │ └── yuvBehavior.js │ │ │ └── visionkit-basic-v2/ │ │ │ ├── behavior.js │ │ │ ├── visionkit-basic-v2.js │ │ │ ├── visionkit-basic-v2.json │ │ │ ├── visionkit-basic-v2.wxml │ │ │ ├── visionkit-basic-v2.wxss │ │ │ └── yuvBehavior.js │ │ ├── chattool/ │ │ │ ├── activity_assist/ │ │ │ │ ├── activity_assist.js │ │ │ │ ├── activity_assist.json │ │ │ │ ├── activity_assist.less │ │ │ │ └── activity_assist.wxml │ │ │ ├── material_open/ │ │ │ │ ├── material_open.js │ │ │ │ ├── material_open.json │ │ │ │ ├── material_open.less │ │ │ │ └── material_open.wxml │ │ │ ├── material_view/ │ │ │ │ ├── material_view.js │ │ │ │ ├── material_view.json │ │ │ │ ├── material_view.less │ │ │ │ └── material_view.wxml │ │ │ └── util.js │ │ ├── device/ │ │ │ ├── add-contact/ │ │ │ │ ├── add-contact.js │ │ │ │ ├── add-contact.json │ │ │ │ ├── add-contact.wxml │ │ │ │ └── add-contact.wxss │ │ │ ├── bluetooth/ │ │ │ │ ├── bluetooth.js │ │ │ │ ├── bluetooth.json │ │ │ │ ├── bluetooth.wxml │ │ │ │ ├── bluetooth.wxss │ │ │ │ └── slave/ │ │ │ │ ├── slave.js │ │ │ │ ├── slave.json │ │ │ │ ├── slave.wxml │ │ │ │ └── slave.wxss │ │ │ ├── capture-screen/ │ │ │ │ ├── capture-screen.js │ │ │ │ ├── capture-screen.json │ │ │ │ ├── capture-screen.wxml │ │ │ │ └── capture-screen.wxss │ │ │ ├── clipboard-data/ │ │ │ │ ├── clipboard-data.js │ │ │ │ ├── clipboard-data.json │ │ │ │ ├── clipboard-data.wxml │ │ │ │ └── clipboard-data.wxss │ │ │ ├── get-battery-info/ │ │ │ │ ├── get-battery-info.js │ │ │ │ ├── get-battery-info.json │ │ │ │ ├── get-battery-info.wxml │ │ │ │ └── get-battery-info.wxss │ │ │ ├── get-network-type/ │ │ │ │ ├── get-network-type.js │ │ │ │ ├── get-network-type.json │ │ │ │ ├── get-network-type.wxml │ │ │ │ └── get-network-type.wxss │ │ │ ├── get-system-info/ │ │ │ │ ├── get-system-info.js │ │ │ │ ├── get-system-info.json │ │ │ │ ├── get-system-info.wxml │ │ │ │ └── get-system-info.wxss │ │ │ ├── ibeacon/ │ │ │ │ ├── ibeacon.js │ │ │ │ ├── ibeacon.json │ │ │ │ ├── ibeacon.wxml │ │ │ │ └── ibeacon.wxss │ │ │ ├── make-phone-call/ │ │ │ │ ├── make-phone-call.js │ │ │ │ ├── make-phone-call.json │ │ │ │ ├── make-phone-call.wxml │ │ │ │ └── make-phone-call.wxss │ │ │ ├── on-accelerometer-change/ │ │ │ │ ├── on-accelerometer-change.js │ │ │ │ ├── on-accelerometer-change.json │ │ │ │ ├── on-accelerometer-change.wxml │ │ │ │ └── on-accelerometer-change.wxss │ │ │ ├── on-compass-change/ │ │ │ │ ├── on-compass-change.js │ │ │ │ ├── on-compass-change.json │ │ │ │ ├── on-compass-change.wxml │ │ │ │ └── on-compass-change.wxss │ │ │ ├── on-network-status-change/ │ │ │ │ ├── on-network-status-change.js │ │ │ │ ├── on-network-status-change.json │ │ │ │ ├── on-network-status-change.wxml │ │ │ │ └── on-network-status-change.wxss │ │ │ ├── scan-code/ │ │ │ │ ├── scan-code.js │ │ │ │ ├── scan-code.json │ │ │ │ ├── scan-code.wxml │ │ │ │ └── scan-code.wxss │ │ │ ├── screen-brightness/ │ │ │ │ ├── screen-brightness.js │ │ │ │ ├── screen-brightness.json │ │ │ │ ├── screen-brightness.wxml │ │ │ │ └── screen-brightness.wxss │ │ │ ├── vibrate/ │ │ │ │ ├── vibrate.js │ │ │ │ ├── vibrate.json │ │ │ │ ├── vibrate.wxml │ │ │ │ └── vibrate.wxss │ │ │ └── wifi/ │ │ │ ├── wifi.js │ │ │ ├── wifi.json │ │ │ ├── wifi.wxml │ │ │ └── wifi.wxss │ │ ├── framework/ │ │ │ ├── resizable/ │ │ │ │ ├── resizable.js │ │ │ │ ├── resizable.json │ │ │ │ ├── resizable.wxml │ │ │ │ ├── resizable.wxs │ │ │ │ └── resizable.wxss │ │ │ ├── two-way-bindings/ │ │ │ │ ├── two-way-bindings.js │ │ │ │ ├── two-way-bindings.json │ │ │ │ ├── two-way-bindings.wxml │ │ │ │ └── two-way-bindings.wxss │ │ │ └── wxs/ │ │ │ ├── movable.js │ │ │ ├── movable.json │ │ │ ├── movable.wxml │ │ │ ├── movable.wxs │ │ │ ├── movable.wxss │ │ │ ├── nearby.js │ │ │ ├── nearby.json │ │ │ ├── nearby.wxml │ │ │ ├── nearby.wxs │ │ │ ├── nearby.wxss │ │ │ ├── sidebar.js │ │ │ ├── sidebar.json │ │ │ ├── sidebar.wxml │ │ │ ├── sidebar.wxs │ │ │ ├── sidebar.wxss │ │ │ ├── stick-top.js │ │ │ ├── stick-top.json │ │ │ ├── stick-top.wxml │ │ │ ├── stick-top.wxs │ │ │ ├── stick-top.wxss │ │ │ ├── wxs.js │ │ │ ├── wxs.json │ │ │ ├── wxs.wxml │ │ │ └── wxs.wxss │ │ ├── location/ │ │ │ ├── choose-location/ │ │ │ │ ├── choose-location.js │ │ │ │ ├── choose-location.json │ │ │ │ ├── choose-location.wxml │ │ │ │ └── choose-location.wxss │ │ │ ├── get-location/ │ │ │ │ ├── get-location.js │ │ │ │ ├── get-location.json │ │ │ │ ├── get-location.wxml │ │ │ │ └── get-location.wxss │ │ │ └── open-location/ │ │ │ ├── open-location.js │ │ │ ├── open-location.json │ │ │ ├── open-location.wxml │ │ │ └── open-location.wxss │ │ ├── media/ │ │ │ ├── audio/ │ │ │ │ ├── audio.js │ │ │ │ ├── audio.json │ │ │ │ ├── audio.wxml │ │ │ │ └── audio.wxss │ │ │ ├── background-audio/ │ │ │ │ ├── background-audio.js │ │ │ │ ├── background-audio.json │ │ │ │ ├── background-audio.wxml │ │ │ │ └── background-audio.wxss │ │ │ ├── file/ │ │ │ │ ├── file.js │ │ │ │ ├── file.json │ │ │ │ ├── file.wxml │ │ │ │ └── file.wxss │ │ │ ├── image/ │ │ │ │ ├── image.js │ │ │ │ ├── image.json │ │ │ │ ├── image.wxml │ │ │ │ └── image.wxss │ │ │ ├── load-font-face/ │ │ │ │ ├── load-font-face.js │ │ │ │ ├── load-font-face.json │ │ │ │ ├── load-font-face.wxml │ │ │ │ └── load-font-face.wxss │ │ │ ├── media-container/ │ │ │ │ ├── media-container.js │ │ │ │ ├── media-container.json │ │ │ │ ├── media-container.wxml │ │ │ │ └── media-container.wxss │ │ │ ├── video/ │ │ │ │ ├── video.js │ │ │ │ ├── video.json │ │ │ │ ├── video.wxml │ │ │ │ └── video.wxss │ │ │ └── voice/ │ │ │ ├── voice.js │ │ │ ├── voice.json │ │ │ ├── voice.wxml │ │ │ └── voice.wxss │ │ ├── network/ │ │ │ ├── download-file/ │ │ │ │ ├── download-file.js │ │ │ │ ├── download-file.json │ │ │ │ ├── download-file.wxml │ │ │ │ └── download-file.wxss │ │ │ ├── mdns/ │ │ │ │ ├── mdns.js │ │ │ │ ├── mdns.json │ │ │ │ ├── mdns.wxml │ │ │ │ └── mdns.wxss │ │ │ ├── request/ │ │ │ │ ├── request.js │ │ │ │ ├── request.json │ │ │ │ ├── request.wxml │ │ │ │ └── request.wxss │ │ │ ├── udp-socket/ │ │ │ │ ├── udp-socket.js │ │ │ │ ├── udp-socket.json │ │ │ │ ├── udp-socket.wxml │ │ │ │ └── udp-socket.wxss │ │ │ ├── upload-file/ │ │ │ │ ├── upload-file.js │ │ │ │ ├── upload-file.json │ │ │ │ ├── upload-file.wxml │ │ │ │ └── upload-file.wxss │ │ │ └── web-socket/ │ │ │ ├── web-socket.js │ │ │ ├── web-socket.json │ │ │ ├── web-socket.wxml │ │ │ └── web-socket.wxss │ │ ├── nouse/ │ │ │ ├── custom-service/ │ │ │ │ ├── custom-service.js │ │ │ │ ├── custom-service.json │ │ │ │ ├── custom-service.wxml │ │ │ │ └── custom-service.wxss │ │ │ ├── doc-web-view/ │ │ │ │ ├── doc-web-view.js │ │ │ │ ├── doc-web-view.json │ │ │ │ ├── doc-web-view.wxml │ │ │ │ └── doc-web-view.wxss │ │ │ └── sendMessage/ │ │ │ ├── sendMessage.js │ │ │ ├── sendMessage.json │ │ │ ├── sendMessage.wxml │ │ │ └── sendMessage.wxss │ │ ├── page/ │ │ │ ├── action-sheet/ │ │ │ │ ├── action-sheet.js │ │ │ │ ├── action-sheet.json │ │ │ │ ├── action-sheet.wxml │ │ │ │ └── action-sheet.wxss │ │ │ ├── animation/ │ │ │ │ ├── animation.js │ │ │ │ ├── animation.json │ │ │ │ ├── animation.wxml │ │ │ │ └── animation.wxss │ │ │ ├── canvas/ │ │ │ │ ├── canvas.js │ │ │ │ ├── canvas.json │ │ │ │ ├── canvas.wxml │ │ │ │ ├── canvas.wxss │ │ │ │ └── example.js │ │ │ ├── get-wxml-node-info/ │ │ │ │ ├── get-wxml-node-info.js │ │ │ │ ├── get-wxml-node-info.json │ │ │ │ ├── get-wxml-node-info.wxml │ │ │ │ └── get-wxml-node-info.wxss │ │ │ ├── intersection-observer/ │ │ │ │ ├── intersection-observer.js │ │ │ │ ├── intersection-observer.json │ │ │ │ ├── intersection-observer.wxml │ │ │ │ └── intersection-observer.wxss │ │ │ ├── modal/ │ │ │ │ ├── modal.js │ │ │ │ ├── modal.json │ │ │ │ ├── modal.wxml │ │ │ │ └── modal.wxss │ │ │ ├── navigation-bar-loading/ │ │ │ │ ├── navigation-bar-loading.js │ │ │ │ ├── navigation-bar-loading.json │ │ │ │ ├── navigation-bar-loading.wxml │ │ │ │ └── navigation-bar-loading.wxss │ │ │ ├── navigator/ │ │ │ │ ├── navigator.js │ │ │ │ ├── navigator.json │ │ │ │ ├── navigator.wxml │ │ │ │ └── navigator.wxss │ │ │ ├── page-scroll/ │ │ │ │ ├── page-scroll.js │ │ │ │ ├── page-scroll.json │ │ │ │ ├── page-scroll.wxml │ │ │ │ └── page-scroll.wxss │ │ │ ├── pull-down-refresh/ │ │ │ │ ├── pull-down-refresh.js │ │ │ │ ├── pull-down-refresh.json │ │ │ │ ├── pull-down-refresh.wxml │ │ │ │ └── pull-down-refresh.wxss │ │ │ ├── set-navigation-bar-title/ │ │ │ │ ├── set-navigation-bar-title.js │ │ │ │ ├── set-navigation-bar-title.json │ │ │ │ ├── set-navigation-bar-title.wxml │ │ │ │ └── set-navigation-bar-title.wxss │ │ │ └── toast/ │ │ │ ├── toast.js │ │ │ ├── toast.json │ │ │ ├── toast.wxml │ │ │ └── toast.wxss │ │ ├── performance/ │ │ │ └── get-performance/ │ │ │ ├── get-performance.js │ │ │ ├── get-performance.json │ │ │ ├── get-performance.wxml │ │ │ ├── get-performance.wxss │ │ │ └── util.js │ │ ├── storage/ │ │ │ ├── get-background-fetch-data/ │ │ │ │ ├── get-background-fetch-data.js │ │ │ │ ├── get-background-fetch-data.json │ │ │ │ ├── get-background-fetch-data.wxml │ │ │ │ └── get-background-fetch-data.wxss │ │ │ ├── get-background-prefetch-data/ │ │ │ │ ├── get-background-prefetch-data.js │ │ │ │ ├── get-background-prefetch-data.json │ │ │ │ ├── get-background-prefetch-data.wxml │ │ │ │ └── get-background-prefetch-data.wxss │ │ │ └── storage/ │ │ │ ├── storage.js │ │ │ ├── storage.json │ │ │ ├── storage.wxml │ │ │ └── storage.wxss │ │ └── worker/ │ │ └── worker/ │ │ ├── worker/ │ │ │ ├── worker.js │ │ │ ├── worker.json │ │ │ ├── worker.wxml │ │ │ └── worker.wxss │ │ ├── worker.js │ │ ├── worker.json │ │ ├── worker.wxml │ │ └── worker.wxss │ ├── packageChatTool/ │ │ ├── components/ │ │ │ ├── apiCategory/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── tdesign-miniprogram/ │ │ │ ├── .wechatide.ib.json │ │ │ ├── badge/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── badge.d.ts │ │ │ │ ├── badge.js │ │ │ │ ├── badge.json │ │ │ │ ├── badge.wxml │ │ │ │ ├── badge.wxs │ │ │ │ ├── badge.wxss │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── button/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── button.d.ts │ │ │ │ ├── button.js │ │ │ │ ├── button.json │ │ │ │ ├── button.wxml │ │ │ │ ├── button.wxss │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── cell/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── cell.d.ts │ │ │ │ ├── cell.js │ │ │ │ ├── cell.json │ │ │ │ ├── cell.wxml │ │ │ │ ├── cell.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── cell-group/ │ │ │ │ ├── cell-group.d.ts │ │ │ │ ├── cell-group.js │ │ │ │ ├── cell-group.json │ │ │ │ ├── cell-group.wxml │ │ │ │ ├── cell-group.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── checkbox/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── checkbox.d.ts │ │ │ │ ├── checkbox.js │ │ │ │ ├── checkbox.json │ │ │ │ ├── checkbox.wxml │ │ │ │ ├── checkbox.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── checkbox-group/ │ │ │ │ ├── checkbox-group.d.ts │ │ │ │ ├── checkbox-group.js │ │ │ │ ├── checkbox-group.json │ │ │ │ ├── checkbox-group.wxml │ │ │ │ ├── checkbox-group.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── common/ │ │ │ │ ├── bus.d.ts │ │ │ │ ├── bus.js │ │ │ │ ├── common.d.ts │ │ │ │ ├── common.js │ │ │ │ ├── component.d.ts │ │ │ │ ├── component.js │ │ │ │ ├── config.d.ts │ │ │ │ ├── config.js │ │ │ │ ├── index.wxss │ │ │ │ ├── shared/ │ │ │ │ │ ├── calendar/ │ │ │ │ │ │ ├── index.d.ts │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── type.d.ts │ │ │ │ │ │ └── type.js │ │ │ │ │ ├── color-picker/ │ │ │ │ │ │ ├── cmyk.d.ts │ │ │ │ │ │ ├── cmyk.js │ │ │ │ │ │ ├── color.d.ts │ │ │ │ │ │ ├── color.js │ │ │ │ │ │ ├── gradient.d.ts │ │ │ │ │ │ ├── gradient.js │ │ │ │ │ │ ├── index.d.ts │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── date.d.ts │ │ │ │ │ └── date.js │ │ │ │ ├── src/ │ │ │ │ │ ├── control.d.ts │ │ │ │ │ ├── control.js │ │ │ │ │ ├── flatTool.d.ts │ │ │ │ │ ├── flatTool.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ ├── index.js │ │ │ │ │ ├── instantiationDecorator.d.ts │ │ │ │ │ ├── instantiationDecorator.js │ │ │ │ │ ├── superComponent.d.ts │ │ │ │ │ └── superComponent.js │ │ │ │ ├── style/ │ │ │ │ │ ├── _variables.wxss │ │ │ │ │ ├── base.wxss │ │ │ │ │ ├── icons.wxss │ │ │ │ │ ├── index.wxss │ │ │ │ │ ├── mixins/ │ │ │ │ │ │ ├── _clearfix.wxss │ │ │ │ │ │ ├── _cursor.wxss │ │ │ │ │ │ ├── _ellipsis.wxss │ │ │ │ │ │ ├── _hairline.wxss │ │ │ │ │ │ └── _index.wxss │ │ │ │ │ ├── theme/ │ │ │ │ │ │ ├── _components.wxss │ │ │ │ │ │ ├── _dark.wxss │ │ │ │ │ │ ├── _font.wxss │ │ │ │ │ │ ├── _index.wxss │ │ │ │ │ │ ├── _light.wxss │ │ │ │ │ │ ├── _radius.wxss │ │ │ │ │ │ └── _spacer.wxss │ │ │ │ │ └── utilities/ │ │ │ │ │ ├── _animation.wxss │ │ │ │ │ ├── _float.wxss │ │ │ │ │ └── _index.wxss │ │ │ │ ├── template/ │ │ │ │ │ ├── badge.wxml │ │ │ │ │ ├── button.wxml │ │ │ │ │ ├── icon.wxml │ │ │ │ │ └── image.wxml │ │ │ │ ├── utils.d.ts │ │ │ │ ├── utils.js │ │ │ │ ├── utils.wxs │ │ │ │ ├── version.d.ts │ │ │ │ ├── version.js │ │ │ │ ├── wechat.d.ts │ │ │ │ └── wechat.js │ │ │ ├── divider/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── divider.d.ts │ │ │ │ ├── divider.js │ │ │ │ ├── divider.json │ │ │ │ ├── divider.wxml │ │ │ │ ├── divider.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── empty/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── empty.d.ts │ │ │ │ ├── empty.js │ │ │ │ ├── empty.json │ │ │ │ ├── empty.wxml │ │ │ │ ├── empty.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── icon/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── icon.d.ts │ │ │ │ ├── icon.js │ │ │ │ ├── icon.json │ │ │ │ ├── icon.wxml │ │ │ │ ├── icon.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── image/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── image-info.json │ │ │ │ ├── image.d.ts │ │ │ │ ├── image.js │ │ │ │ ├── image.json │ │ │ │ ├── image.wxml │ │ │ │ ├── image.wxss │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── indexes/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── indexes.d.ts │ │ │ │ ├── indexes.js │ │ │ │ ├── indexes.json │ │ │ │ ├── indexes.wxml │ │ │ │ ├── indexes.wxs │ │ │ │ ├── indexes.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── loading/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── loading.d.ts │ │ │ │ ├── loading.js │ │ │ │ ├── loading.json │ │ │ │ ├── loading.wxml │ │ │ │ ├── loading.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── mixins/ │ │ │ │ ├── page-scroll.d.ts │ │ │ │ ├── page-scroll.js │ │ │ │ ├── theme-change.d.ts │ │ │ │ ├── theme-change.js │ │ │ │ ├── touch.d.ts │ │ │ │ ├── touch.js │ │ │ │ ├── transition.d.ts │ │ │ │ ├── transition.js │ │ │ │ ├── using-custom-navbar.d.ts │ │ │ │ └── using-custom-navbar.js │ │ │ ├── navbar/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── navbar.d.ts │ │ │ │ ├── navbar.js │ │ │ │ ├── navbar.json │ │ │ │ ├── navbar.wxml │ │ │ │ ├── navbar.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── progress/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── progress.d.ts │ │ │ │ ├── progress.js │ │ │ │ ├── progress.json │ │ │ │ ├── progress.wxml │ │ │ │ ├── progress.wxs │ │ │ │ ├── progress.wxss │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── type.d.ts │ │ │ │ ├── type.js │ │ │ │ ├── utils.d.ts │ │ │ │ └── utils.js │ │ │ ├── radio/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── radio.d.ts │ │ │ │ ├── radio.js │ │ │ │ ├── radio.json │ │ │ │ ├── radio.wxml │ │ │ │ ├── radio.wxss │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── radio-group/ │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── radio-group.d.ts │ │ │ │ ├── radio-group.js │ │ │ │ ├── radio-group.json │ │ │ │ ├── radio-group.wxml │ │ │ │ ├── radio-group.wxss │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── slider/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── slider.d.ts │ │ │ │ ├── slider.js │ │ │ │ ├── slider.json │ │ │ │ ├── slider.wxml │ │ │ │ ├── slider.wxs │ │ │ │ ├── slider.wxss │ │ │ │ ├── tool.d.ts │ │ │ │ ├── tool.js │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── sticky/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── sticky.d.ts │ │ │ │ ├── sticky.js │ │ │ │ ├── sticky.json │ │ │ │ ├── sticky.wxml │ │ │ │ ├── sticky.wxss │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── switch/ │ │ │ │ ├── README.en-US.md │ │ │ │ ├── README.md │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── switch.d.ts │ │ │ │ ├── switch.js │ │ │ │ ├── switch.json │ │ │ │ ├── switch.wxml │ │ │ │ ├── switch.wxss │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ ├── tab-panel/ │ │ │ │ ├── props.d.ts │ │ │ │ ├── props.js │ │ │ │ ├── tab-panel.d.ts │ │ │ │ ├── tab-panel.js │ │ │ │ ├── tab-panel.json │ │ │ │ ├── tab-panel.wxml │ │ │ │ ├── tab-panel.wxss │ │ │ │ ├── type.d.ts │ │ │ │ └── type.js │ │ │ └── tabs/ │ │ │ ├── README.en-US.md │ │ │ ├── README.md │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── props.d.ts │ │ │ ├── props.js │ │ │ ├── tabs.d.ts │ │ │ ├── tabs.js │ │ │ ├── tabs.json │ │ │ ├── tabs.wxml │ │ │ ├── tabs.wxs │ │ │ ├── tabs.wxss │ │ │ ├── type.d.ts │ │ │ └── type.js │ │ ├── entry.js │ │ ├── pages/ │ │ │ ├── activity_create/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── activity_detail/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── util.js │ ├── packageCloud/ │ │ ├── pages/ │ │ │ ├── database/ │ │ │ │ ├── crud/ │ │ │ │ │ ├── crud.js │ │ │ │ │ ├── crud.json │ │ │ │ │ ├── crud.wxml │ │ │ │ │ └── crud.wxss │ │ │ │ ├── db-permission/ │ │ │ │ │ ├── db-permission.js │ │ │ │ │ ├── db-permission.json │ │ │ │ │ ├── db-permission.wxml │ │ │ │ │ └── db-permission.wxss │ │ │ │ └── server-date/ │ │ │ │ ├── server-date.js │ │ │ │ ├── server-date.json │ │ │ │ ├── server-date.wxml │ │ │ │ └── server-date.wxss │ │ │ ├── nouse/ │ │ │ │ ├── crud-detail/ │ │ │ │ │ ├── crud-detail.js │ │ │ │ │ ├── crud-detail.json │ │ │ │ │ ├── crud-detail.wxml │ │ │ │ │ └── crud-detail.wxss │ │ │ │ └── doc-web-view/ │ │ │ │ ├── doc-web-view.js │ │ │ │ ├── doc-web-view.json │ │ │ │ ├── doc-web-view.wxml │ │ │ │ └── doc-web-view.wxss │ │ │ ├── scf/ │ │ │ │ ├── get-wx-context/ │ │ │ │ │ ├── get-wx-context.js │ │ │ │ │ ├── get-wx-context.json │ │ │ │ │ ├── get-wx-context.wxml │ │ │ │ │ └── get-wx-context.wxss │ │ │ │ ├── scf-database/ │ │ │ │ │ ├── scf-database.js │ │ │ │ │ ├── scf-database.json │ │ │ │ │ ├── scf-database.wxml │ │ │ │ │ └── scf-database.wxss │ │ │ │ ├── scf-openapi/ │ │ │ │ │ ├── scf-openapi.js │ │ │ │ │ ├── scf-openapi.json │ │ │ │ │ ├── scf-openapi.wxml │ │ │ │ │ └── scf-openapi.wxss │ │ │ │ └── scf-storage/ │ │ │ │ ├── scf-storage.js │ │ │ │ ├── scf-storage.json │ │ │ │ ├── scf-storage.wxml │ │ │ │ └── scf-storage.wxss │ │ │ ├── storage/ │ │ │ │ ├── cloud-file-component/ │ │ │ │ │ ├── cloud-file-component.js │ │ │ │ │ ├── cloud-file-component.json │ │ │ │ │ ├── cloud-file-component.wxml │ │ │ │ │ └── cloud-file-component.wxss │ │ │ │ ├── delete-file/ │ │ │ │ │ ├── delete-file.js │ │ │ │ │ ├── delete-file.json │ │ │ │ │ ├── delete-file.wxml │ │ │ │ │ └── delete-file.wxss │ │ │ │ ├── download-file/ │ │ │ │ │ ├── download-file.js │ │ │ │ │ ├── download-file.json │ │ │ │ │ ├── download-file.wxml │ │ │ │ │ └── download-file.wxss │ │ │ │ ├── get-temp-file-url/ │ │ │ │ │ ├── get-temp-file-url.js │ │ │ │ │ ├── get-temp-file-url.json │ │ │ │ │ ├── get-temp-file-url.wxml │ │ │ │ │ └── get-temp-file-url.wxss │ │ │ │ └── upload-file/ │ │ │ │ ├── upload-file.js │ │ │ │ ├── upload-file.json │ │ │ │ ├── upload-file.wxml │ │ │ │ └── upload-file.wxss │ │ │ └── user/ │ │ │ └── user-authentication/ │ │ │ ├── user-authentication.js │ │ │ ├── user-authentication.json │ │ │ ├── user-authentication.wxml │ │ │ └── user-authentication.wxss │ │ └── resources/ │ │ └── db_dump/ │ │ ├── perm1.json │ │ ├── perm2.json │ │ ├── perm3.json │ │ └── perm4.json │ ├── packageComponent/ │ │ └── pages/ │ │ ├── canvas/ │ │ │ ├── canvas/ │ │ │ │ ├── canvas.js │ │ │ │ ├── canvas.json │ │ │ │ ├── canvas.wxml │ │ │ │ └── canvas.wxss │ │ │ ├── canvas-2d/ │ │ │ │ ├── canvas-2d.js │ │ │ │ ├── canvas-2d.json │ │ │ │ ├── canvas-2d.wxml │ │ │ │ └── canvas-2d.wxss │ │ │ └── webgl/ │ │ │ ├── webgl.js │ │ │ ├── webgl.json │ │ │ ├── webgl.wxml │ │ │ └── webgl.wxss │ │ ├── content/ │ │ │ ├── icon/ │ │ │ │ ├── icon.js │ │ │ │ ├── icon.json │ │ │ │ ├── icon.wxml │ │ │ │ └── icon.wxss │ │ │ ├── progress/ │ │ │ │ ├── progress.js │ │ │ │ ├── progress.json │ │ │ │ ├── progress.wxml │ │ │ │ └── progress.wxss │ │ │ ├── rich-text/ │ │ │ │ ├── rich-text.js │ │ │ │ ├── rich-text.json │ │ │ │ ├── rich-text.wxml │ │ │ │ └── rich-text.wxss │ │ │ ├── selection/ │ │ │ │ ├── selection.js │ │ │ │ ├── selection.json │ │ │ │ ├── selection.wxml │ │ │ │ └── selection.wxss │ │ │ └── text/ │ │ │ ├── text.js │ │ │ ├── text.json │ │ │ ├── text.wxml │ │ │ └── text.wxss │ │ ├── doc-web-view/ │ │ │ ├── doc-web-view.js │ │ │ ├── doc-web-view.json │ │ │ ├── doc-web-view.wxml │ │ │ └── doc-web-view.wxss │ │ ├── form/ │ │ │ ├── button/ │ │ │ │ ├── button.js │ │ │ │ ├── button.json │ │ │ │ ├── button.wxml │ │ │ │ └── button.wxss │ │ │ ├── checkbox/ │ │ │ │ ├── checkbox.js │ │ │ │ ├── checkbox.json │ │ │ │ ├── checkbox.wxml │ │ │ │ └── checkbox.wxss │ │ │ ├── editor/ │ │ │ │ ├── assets/ │ │ │ │ │ └── iconfont.wxss │ │ │ │ ├── editor.js │ │ │ │ ├── editor.json │ │ │ │ ├── editor.wxml │ │ │ │ └── editor.wxss │ │ │ ├── form/ │ │ │ │ ├── form.js │ │ │ │ ├── form.json │ │ │ │ ├── form.wxml │ │ │ │ └── form.wxss │ │ │ ├── input/ │ │ │ │ ├── input.js │ │ │ │ ├── input.json │ │ │ │ ├── input.wxml │ │ │ │ └── input.wxss │ │ │ ├── label/ │ │ │ │ ├── label.js │ │ │ │ ├── label.json │ │ │ │ ├── label.wxml │ │ │ │ └── label.wxss │ │ │ ├── picker/ │ │ │ │ ├── picker.js │ │ │ │ ├── picker.json │ │ │ │ ├── picker.wxml │ │ │ │ └── picker.wxss │ │ │ ├── picker-view/ │ │ │ │ ├── picker-view.js │ │ │ │ ├── picker-view.json │ │ │ │ ├── picker-view.wxml │ │ │ │ └── picker-view.wxss │ │ │ ├── radio/ │ │ │ │ ├── radio.js │ │ │ │ ├── radio.json │ │ │ │ ├── radio.wxml │ │ │ │ └── radio.wxss │ │ │ ├── slider/ │ │ │ │ ├── slider.js │ │ │ │ ├── slider.json │ │ │ │ ├── slider.wxml │ │ │ │ └── slider.wxss │ │ │ ├── switch/ │ │ │ │ ├── switch.js │ │ │ │ ├── switch.json │ │ │ │ ├── switch.wxml │ │ │ │ └── switch.wxss │ │ │ └── textarea/ │ │ │ ├── textarea.js │ │ │ ├── textarea.json │ │ │ ├── textarea.wxml │ │ │ └── textarea.wxss │ │ ├── map/ │ │ │ └── map/ │ │ │ ├── map.js │ │ │ ├── map.json │ │ │ ├── map.wxml │ │ │ └── map.wxss │ │ ├── map-styles/ │ │ │ ├── map-styles.js │ │ │ ├── map-styles.json │ │ │ ├── map-styles.wxml │ │ │ └── map-styles.wxss │ │ ├── media/ │ │ │ ├── camera/ │ │ │ │ ├── camera.js │ │ │ │ ├── camera.json │ │ │ │ ├── camera.wxml │ │ │ │ └── camera.wxss │ │ │ ├── camera-scan-code/ │ │ │ │ ├── camera-scan-code.json │ │ │ │ ├── camera-scan-code.less │ │ │ │ ├── camera-scan-code.ts │ │ │ │ └── camera-scan-code.wxml │ │ │ ├── channel-live/ │ │ │ │ ├── channel-live.js │ │ │ │ ├── channel-live.json │ │ │ │ ├── channel-live.wxml │ │ │ │ └── channel-live.wxss │ │ │ ├── channel-video/ │ │ │ │ ├── channel-video.js │ │ │ │ ├── channel-video.json │ │ │ │ ├── channel-video.wxml │ │ │ │ └── channel-video.wxss │ │ │ ├── image/ │ │ │ │ ├── image.js │ │ │ │ ├── image.json │ │ │ │ ├── image.wxml │ │ │ │ └── image.wxss │ │ │ ├── live-player/ │ │ │ │ ├── live-player.js │ │ │ │ ├── live-player.json │ │ │ │ ├── live-player.wxml │ │ │ │ └── live-player.wxss │ │ │ ├── live-pusher/ │ │ │ │ ├── live-pusher.js │ │ │ │ ├── live-pusher.json │ │ │ │ ├── live-pusher.wxml │ │ │ │ └── live-pusher.wxss │ │ │ └── video/ │ │ │ ├── picture-in-picture.js │ │ │ ├── picture-in-picture.json │ │ │ ├── picture-in-picture.wxml │ │ │ ├── picture-in-picture.wxss │ │ │ ├── video.js │ │ │ ├── video.json │ │ │ ├── video.wxml │ │ │ └── video.wxss │ │ ├── nav/ │ │ │ └── navigator/ │ │ │ ├── navigate.js │ │ │ ├── navigate.json │ │ │ ├── navigate.wxml │ │ │ ├── navigate.wxss │ │ │ ├── navigator.js │ │ │ ├── navigator.json │ │ │ ├── navigator.wxml │ │ │ ├── navigator.wxss │ │ │ ├── redirect.js │ │ │ ├── redirect.json │ │ │ ├── redirect.wxml │ │ │ └── redirect.wxss │ │ ├── obstacle-free/ │ │ │ └── aria-component/ │ │ │ ├── aria-component.js │ │ │ ├── aria-component.json │ │ │ ├── aria-component.wxml │ │ │ └── aria-component.wxss │ │ ├── official-account/ │ │ │ ├── official-account.js │ │ │ ├── official-account.json │ │ │ ├── official-account.wxml │ │ │ └── official-account.wxss │ │ ├── open/ │ │ │ ├── ad/ │ │ │ │ ├── ad.js │ │ │ │ ├── ad.json │ │ │ │ ├── ad.wxml │ │ │ │ └── ad.wxss │ │ │ ├── open-data/ │ │ │ │ ├── open-data.js │ │ │ │ ├── open-data.json │ │ │ │ ├── open-data.wxml │ │ │ │ └── open-data.wxss │ │ │ └── web-view/ │ │ │ ├── web-view.js │ │ │ ├── web-view.json │ │ │ ├── web-view.wxml │ │ │ └── web-view.wxss │ │ └── view/ │ │ ├── cover-view/ │ │ │ ├── cover-view.js │ │ │ ├── cover-view.json │ │ │ ├── cover-view.wxml │ │ │ └── cover-view.wxss │ │ ├── grid-view/ │ │ │ ├── demo-1/ │ │ │ │ ├── demo-1.js │ │ │ │ ├── demo-1.json │ │ │ │ ├── demo-1.wxml │ │ │ │ └── demo-1.wxss │ │ │ ├── demo-2/ │ │ │ │ ├── demo-2.js │ │ │ │ ├── demo-2.json │ │ │ │ ├── demo-2.wxml │ │ │ │ └── demo-2.wxss │ │ │ ├── grid-view.js │ │ │ ├── grid-view.json │ │ │ ├── grid-view.wxml │ │ │ └── grid-view.wxss │ │ ├── match-media/ │ │ │ ├── match-media.js │ │ │ ├── match-media.json │ │ │ ├── match-media.wxml │ │ │ └── match-media.wxss │ │ ├── movable-view/ │ │ │ ├── movable-view.js │ │ │ ├── movable-view.json │ │ │ ├── movable-view.wxml │ │ │ └── movable-view.wxss │ │ ├── page-container/ │ │ │ ├── page-container.js │ │ │ ├── page-container.json │ │ │ ├── page-container.wxml │ │ │ └── page-container.wxss │ │ ├── root-portal/ │ │ │ ├── root-portal.js │ │ │ ├── root-portal.json │ │ │ ├── root-portal.wxml │ │ │ └── root-portal.wxss │ │ ├── scroll-view/ │ │ │ ├── scroll-view.js │ │ │ ├── scroll-view.json │ │ │ ├── scroll-view.wxml │ │ │ └── scroll-view.wxss │ │ ├── sticky/ │ │ │ ├── sticky-header/ │ │ │ │ ├── sticky-header.js │ │ │ │ ├── sticky-header.json │ │ │ │ ├── sticky-header.wxml │ │ │ │ └── sticky-header.wxss │ │ │ ├── sticky-section/ │ │ │ │ ├── sticky-section.js │ │ │ │ ├── sticky-section.json │ │ │ │ ├── sticky-section.wxml │ │ │ │ └── sticky-section.wxss │ │ │ ├── sticky.js │ │ │ ├── sticky.json │ │ │ ├── sticky.wxml │ │ │ └── sticky.wxss │ │ ├── swiper/ │ │ │ ├── swiper.js │ │ │ ├── swiper.json │ │ │ ├── swiper.wxml │ │ │ └── swiper.wxss │ │ └── view/ │ │ ├── view.js │ │ ├── view.json │ │ ├── view.wxml │ │ └── view.wxss │ ├── packageExtend/ │ │ ├── base/ │ │ │ ├── CustomPage.js │ │ │ └── behaviors/ │ │ │ └── theme.js │ │ ├── components/ │ │ │ ├── actionsheet/ │ │ │ │ ├── actionsheet.js │ │ │ │ ├── actionsheet.json │ │ │ │ ├── actionsheet.wxml │ │ │ │ └── actionsheet.wxss │ │ │ ├── badge/ │ │ │ │ ├── badge.js │ │ │ │ ├── badge.json │ │ │ │ ├── badge.wxml │ │ │ │ └── badge.wxss │ │ │ ├── cell/ │ │ │ │ ├── cell.js │ │ │ │ ├── cell.json │ │ │ │ ├── cell.wxml │ │ │ │ └── cell.wxss │ │ │ ├── cells/ │ │ │ │ ├── cells.js │ │ │ │ ├── cells.json │ │ │ │ ├── cells.wxml │ │ │ │ └── cells.wxss │ │ │ ├── checkbox/ │ │ │ │ ├── checkbox.js │ │ │ │ ├── checkbox.json │ │ │ │ ├── checkbox.wxml │ │ │ │ └── checkbox.wxss │ │ │ ├── checkbox-group/ │ │ │ │ ├── checkbox-group.js │ │ │ │ ├── checkbox-group.json │ │ │ │ ├── checkbox-group.wxml │ │ │ │ └── checkbox-group.wxss │ │ │ ├── col/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── dialog/ │ │ │ │ ├── dialog.js │ │ │ │ ├── dialog.json │ │ │ │ ├── dialog.wxml │ │ │ │ └── dialog.wxss │ │ │ ├── emoji/ │ │ │ │ ├── emoji.js │ │ │ │ ├── emoji.json │ │ │ │ ├── emoji.wxml │ │ │ │ └── emoji.wxss │ │ │ ├── form/ │ │ │ │ ├── form.js │ │ │ │ ├── form.json │ │ │ │ └── form.wxml │ │ │ ├── form-page/ │ │ │ │ ├── form-page.js │ │ │ │ ├── form-page.json │ │ │ │ ├── form-page.wxml │ │ │ │ └── form-page.wxss │ │ │ ├── gallery/ │ │ │ │ ├── gallery.js │ │ │ │ ├── gallery.json │ │ │ │ ├── gallery.wxml │ │ │ │ └── gallery.wxss │ │ │ ├── grids/ │ │ │ │ ├── grids.js │ │ │ │ ├── grids.json │ │ │ │ ├── grids.wxml │ │ │ │ └── grids.wxss │ │ │ ├── icon/ │ │ │ │ ├── icon.js │ │ │ │ ├── icon.json │ │ │ │ ├── icon.wxml │ │ │ │ └── icon.wxss │ │ │ ├── index-list/ │ │ │ │ ├── index-list.js │ │ │ │ ├── index-list.json │ │ │ │ ├── index-list.wxml │ │ │ │ └── index-list.wxss │ │ │ ├── index.js │ │ │ ├── loading/ │ │ │ │ ├── loading.js │ │ │ │ ├── loading.json │ │ │ │ ├── loading.wxml │ │ │ │ └── loading.wxss │ │ │ ├── msg/ │ │ │ │ ├── msg.js │ │ │ │ ├── msg.json │ │ │ │ ├── msg.wxml │ │ │ │ └── msg.wxss │ │ │ ├── navigation-bar/ │ │ │ │ ├── navigation-bar.js │ │ │ │ ├── navigation-bar.json │ │ │ │ ├── navigation-bar.wxml │ │ │ │ └── navigation-bar.wxss │ │ │ ├── package.json │ │ │ ├── row/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── searchbar/ │ │ │ │ ├── searchbar.js │ │ │ │ ├── searchbar.json │ │ │ │ ├── searchbar.wxml │ │ │ │ └── searchbar.wxss │ │ │ ├── select-text/ │ │ │ │ ├── select-text.js │ │ │ │ ├── select-text.json │ │ │ │ ├── select-text.wxml │ │ │ │ ├── select-text.wxs │ │ │ │ └── select-text.wxss │ │ │ ├── slideview/ │ │ │ │ ├── slideview.js │ │ │ │ ├── slideview.json │ │ │ │ ├── slideview.wxml │ │ │ │ ├── slideview.wxs │ │ │ │ └── slideview.wxss │ │ │ ├── sticky/ │ │ │ │ ├── sticky.js │ │ │ │ ├── sticky.json │ │ │ │ ├── sticky.wxml │ │ │ │ ├── sticky.wxs │ │ │ │ └── sticky.wxss │ │ │ ├── tabbar/ │ │ │ │ ├── tabbar.js │ │ │ │ ├── tabbar.json │ │ │ │ ├── tabbar.wxml │ │ │ │ └── tabbar.wxss │ │ │ ├── tabs/ │ │ │ │ ├── tabs.js │ │ │ │ ├── tabs.json │ │ │ │ ├── tabs.wxml │ │ │ │ └── tabs.wxss │ │ │ ├── toptips/ │ │ │ │ ├── toptips.js │ │ │ │ ├── toptips.json │ │ │ │ ├── toptips.wxml │ │ │ │ └── toptips.wxss │ │ │ ├── uploader/ │ │ │ │ ├── uploader.js │ │ │ │ ├── uploader.json │ │ │ │ ├── uploader.wxml │ │ │ │ └── uploader.wxss │ │ │ ├── video-swiper/ │ │ │ │ ├── video-swiper.js │ │ │ │ ├── video-swiper.json │ │ │ │ ├── video-swiper.wxml │ │ │ │ └── video-swiper.wxss │ │ │ ├── vtabs/ │ │ │ │ ├── vtabs.js │ │ │ │ ├── vtabs.json │ │ │ │ ├── vtabs.wxml │ │ │ │ └── vtabs.wxss │ │ │ ├── vtabs-content/ │ │ │ │ ├── vtabs-content.js │ │ │ │ ├── vtabs-content.json │ │ │ │ ├── vtabs-content.wxml │ │ │ │ └── vtabs-content.wxss │ │ │ └── weui-wxss/ │ │ │ └── dist/ │ │ │ └── style/ │ │ │ ├── icon/ │ │ │ │ └── weui-icon.wxss │ │ │ └── weui.wxss │ │ └── pages/ │ │ ├── adapt/ │ │ │ ├── freelayout/ │ │ │ │ ├── freelayout.js │ │ │ │ ├── freelayout.json │ │ │ │ ├── freelayout.wxml │ │ │ │ └── freelayout.wxss │ │ │ ├── horizontalexpansion/ │ │ │ │ ├── horizontalexpansion.js │ │ │ │ ├── horizontalexpansion.json │ │ │ │ ├── horizontalexpansion.wxml │ │ │ │ └── horizontalexpansion.wxss │ │ │ ├── layeredpresentation/ │ │ │ │ ├── layeredpresentation.js │ │ │ │ ├── layeredpresentation.json │ │ │ │ ├── layeredpresentation.wxml │ │ │ │ └── layeredpresentation.wxss │ │ │ ├── linebreak/ │ │ │ │ ├── linebreak.js │ │ │ │ ├── linebreak.json │ │ │ │ ├── linebreak.wxml │ │ │ │ └── linebreak.wxss │ │ │ ├── pagination/ │ │ │ │ ├── pagination.js │ │ │ │ ├── pagination.json │ │ │ │ ├── pagination.wxml │ │ │ │ └── pagination.wxss │ │ │ ├── sidenavigation/ │ │ │ │ ├── sidenavigation.js │ │ │ │ ├── sidenavigation.json │ │ │ │ ├── sidenavigation.wxml │ │ │ │ └── sidenavigation.wxss │ │ │ └── telescopic/ │ │ │ ├── telescopic.js │ │ │ ├── telescopic.json │ │ │ ├── telescopic.wxml │ │ │ └── telescopic.wxss │ │ ├── base/ │ │ │ ├── article/ │ │ │ │ ├── article.js │ │ │ │ ├── article.json │ │ │ │ ├── article.wxml │ │ │ │ └── article.wxss │ │ │ ├── badge/ │ │ │ │ ├── badge.js │ │ │ │ ├── badge.json │ │ │ │ ├── badge.wxml │ │ │ │ └── badge.wxss │ │ │ ├── flex/ │ │ │ │ ├── flex.js │ │ │ │ ├── flex.json │ │ │ │ ├── flex.wxml │ │ │ │ └── flex.wxss │ │ │ ├── footer/ │ │ │ │ ├── footer.js │ │ │ │ ├── footer.json │ │ │ │ ├── footer.wxml │ │ │ │ └── footer.wxss │ │ │ ├── gallery/ │ │ │ │ ├── gallery.js │ │ │ │ ├── gallery.json │ │ │ │ ├── gallery.wxml │ │ │ │ └── gallery.wxss │ │ │ ├── grid/ │ │ │ │ ├── grid.js │ │ │ │ ├── grid.json │ │ │ │ ├── grid.wxml │ │ │ │ └── grid.wxss │ │ │ ├── icons/ │ │ │ │ ├── icons.js │ │ │ │ ├── icons.json │ │ │ │ ├── icons.wxml │ │ │ │ └── icons.wxss │ │ │ ├── loading/ │ │ │ │ ├── loading.js │ │ │ │ ├── loading.json │ │ │ │ ├── loading.wxml │ │ │ │ └── loading.wxss │ │ │ ├── loadmore/ │ │ │ │ ├── loadmore.js │ │ │ │ ├── loadmore.json │ │ │ │ ├── loadmore.wxml │ │ │ │ └── loadmore.wxss │ │ │ ├── panel/ │ │ │ │ ├── panel.js │ │ │ │ ├── panel.json │ │ │ │ ├── panel.wxml │ │ │ │ └── panel.wxss │ │ │ └── preview/ │ │ │ ├── preview.js │ │ │ ├── preview.json │ │ │ ├── preview.wxml │ │ │ └── preview.wxss │ │ ├── common.wxss │ │ ├── extend/ │ │ │ ├── barrage/ │ │ │ │ ├── barrage.js │ │ │ │ ├── barrage.json │ │ │ │ ├── barrage.wxml │ │ │ │ ├── barrage.wxss │ │ │ │ └── utils.js │ │ │ ├── common.wxss │ │ │ ├── emoji/ │ │ │ │ ├── emoji.js │ │ │ │ ├── emoji.json │ │ │ │ ├── emoji.wxml │ │ │ │ └── emoji.wxss │ │ │ ├── index-list/ │ │ │ │ ├── index-list.js │ │ │ │ ├── index-list.json │ │ │ │ ├── index-list.wxml │ │ │ │ └── index-list.wxss │ │ │ ├── recycle-view/ │ │ │ │ ├── recycle-view.js │ │ │ │ ├── recycle-view.json │ │ │ │ ├── recycle-view.wxml │ │ │ │ └── recycle-view.wxss │ │ │ ├── select-text/ │ │ │ │ ├── select-text.js │ │ │ │ ├── select-text.json │ │ │ │ ├── select-text.wxml │ │ │ │ └── select-text.wxss │ │ │ ├── sticky/ │ │ │ │ ├── sticky.js │ │ │ │ ├── sticky.json │ │ │ │ ├── sticky.wxml │ │ │ │ └── sticky.wxss │ │ │ ├── tabs/ │ │ │ │ ├── tabs.js │ │ │ │ ├── tabs.json │ │ │ │ ├── tabs.wxml │ │ │ │ ├── tabs.wxss │ │ │ │ ├── webview.js │ │ │ │ ├── webview.json │ │ │ │ ├── webview.wxml │ │ │ │ └── webview.wxss │ │ │ ├── video-swiper/ │ │ │ │ ├── video-swiper.js │ │ │ │ ├── video-swiper.json │ │ │ │ ├── video-swiper.wxml │ │ │ │ └── video-swiper.wxss │ │ │ ├── vtabs/ │ │ │ │ ├── vtabs.js │ │ │ │ ├── vtabs.json │ │ │ │ ├── vtabs.wxml │ │ │ │ └── vtabs.wxss │ │ │ └── wxml-to-canvas/ │ │ │ ├── demo.js │ │ │ ├── wxml-to-canvas.js │ │ │ ├── wxml-to-canvas.json │ │ │ ├── wxml-to-canvas.wxml │ │ │ └── wxml-to-canvas.wxss │ │ ├── form/ │ │ │ ├── cell/ │ │ │ │ ├── cell.js │ │ │ │ ├── cell.json │ │ │ │ ├── cell.wxml │ │ │ │ └── cell.wxss │ │ │ ├── form/ │ │ │ │ ├── form.js │ │ │ │ ├── form.json │ │ │ │ ├── form.wxml │ │ │ │ └── form.wxss │ │ │ ├── slideview/ │ │ │ │ ├── slideview.js │ │ │ │ ├── slideview.json │ │ │ │ ├── slideview.wxml │ │ │ │ └── slideview.wxss │ │ │ └── uploader/ │ │ │ ├── uploader.js │ │ │ ├── uploader.json │ │ │ ├── uploader.wxml │ │ │ └── uploader.wxss │ │ ├── images/ │ │ │ └── base64.js │ │ ├── navigation/ │ │ │ ├── navigation/ │ │ │ │ ├── navigation.js │ │ │ │ ├── navigation.json │ │ │ │ ├── navigation.wxml │ │ │ │ └── navigation.wxss │ │ │ └── tabbar/ │ │ │ ├── tabbar.js │ │ │ ├── tabbar.json │ │ │ ├── tabbar.wxml │ │ │ └── tabbar.wxss │ │ ├── operate/ │ │ │ ├── actionsheet/ │ │ │ │ ├── actionsheet.js │ │ │ │ ├── actionsheet.json │ │ │ │ ├── actionsheet.wxml │ │ │ │ └── actionsheet.wxss │ │ │ ├── dialog/ │ │ │ │ ├── dialog.js │ │ │ │ ├── dialog.json │ │ │ │ ├── dialog.wxml │ │ │ │ └── dialog.wxss │ │ │ ├── half-screen-dialog/ │ │ │ │ ├── half-screen-dialog.js │ │ │ │ ├── half-screen-dialog.json │ │ │ │ ├── half-screen-dialog.wxml │ │ │ │ └── half-screen-dialog.wxss │ │ │ ├── msg/ │ │ │ │ ├── msg.js │ │ │ │ ├── msg.json │ │ │ │ ├── msg.wxml │ │ │ │ ├── msg.wxss │ │ │ │ ├── msg_fail.js │ │ │ │ ├── msg_fail.json │ │ │ │ ├── msg_fail.wxml │ │ │ │ ├── msg_fail.wxss │ │ │ │ ├── msg_success.js │ │ │ │ ├── msg_success.json │ │ │ │ ├── msg_success.wxml │ │ │ │ ├── msg_success.wxss │ │ │ │ ├── msg_text.js │ │ │ │ ├── msg_text.json │ │ │ │ ├── msg_text.wxml │ │ │ │ ├── msg_text.wxss │ │ │ │ ├── msg_text_primary.js │ │ │ │ ├── msg_text_primary.json │ │ │ │ ├── msg_text_primary.wxml │ │ │ │ └── msg_text_primary.wxss │ │ │ └── toptips/ │ │ │ ├── toptips.js │ │ │ ├── toptips.json │ │ │ ├── toptips.wxml │ │ │ └── toptips.wxss │ │ └── search/ │ │ └── searchbar/ │ │ ├── searchbar.js │ │ ├── searchbar.json │ │ ├── searchbar.wxml │ │ └── searchbar.wxss │ ├── packageSkyline/ │ │ ├── common/ │ │ │ ├── custom-route/ │ │ │ │ ├── common.js │ │ │ │ ├── cupertino-route.js │ │ │ │ ├── hafl-screen-route.js │ │ │ │ ├── index.js │ │ │ │ ├── opacity-route.js │ │ │ │ ├── scale-route.js │ │ │ │ └── util.js │ │ │ ├── mixin.less │ │ │ ├── tips.js │ │ │ ├── types.js │ │ │ └── worklet-api.js │ │ ├── pages/ │ │ │ ├── base.js │ │ │ ├── half-page/ │ │ │ │ ├── half-page/ │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.less │ │ │ │ │ ├── index.ts │ │ │ │ │ └── index.wxml │ │ │ │ └── scale-page/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.less │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── preview/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── share-element/ │ │ │ │ ├── card/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── data.js │ │ │ │ └── list/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── worklet/ │ │ │ ├── animation/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── bottom-sheet/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── common.wxss │ │ │ └── gesture/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── utils/ │ │ ├── comment.js │ │ ├── constant.js │ │ ├── event-bus.js │ │ ├── route.js │ │ └── tool.js │ ├── packageSkylineRouter/ │ │ ├── components/ │ │ │ ├── example-card/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── example-single-title/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── float-action-button/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── small-card/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── swipe-back/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── custom-route/ │ │ │ ├── bottom-sheet.js │ │ │ ├── cupertino-modal-inside.js │ │ │ ├── cupertino-modal.js │ │ │ ├── cupertino.js │ │ │ ├── fade-upwards.js │ │ │ ├── index.js │ │ │ ├── modal-navigation.js │ │ │ ├── modal.js │ │ │ ├── upwards.js │ │ │ ├── util.js │ │ │ └── zoom.js │ │ └── pages/ │ │ ├── open-container/ │ │ │ ├── detail/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── index/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── other/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── page-return-gesture/ │ │ │ └── index/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── preset-router/ │ │ ├── index/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── list/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── packageXRFrame/ │ │ ├── components/ │ │ │ ├── common/ │ │ │ │ └── share-behavior.js │ │ │ ├── pull-down-list/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── template/ │ │ │ │ ├── xr-template-arGlasses/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-arLine/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-arPreview/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-arui/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-blendDouble/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-control/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-dissolve/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ ├── index.wxss │ │ │ │ │ └── shaders/ │ │ │ │ │ ├── dissolveFrag.js │ │ │ │ │ └── dissolveVert.js │ │ │ │ ├── xr-template-featherVideo/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-frameEffect/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-geometry/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-gltfAnimation/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-gltfEdit/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-gltfOcclusion/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-gltfUVAnimation/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-loading/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-lookat/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-markerCenter/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-markerLock/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-message/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-pbr/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-planeShadow/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-removeBlack/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-select/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-share/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-textEdit/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-toon/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── xr-template-tracker/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ └── xr-template-volumeVideo/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ ├── index.wxss │ │ │ │ ├── mesh4DPlayer.js │ │ │ │ └── shaders/ │ │ │ │ ├── common.js │ │ │ │ ├── shadowFrag.js │ │ │ │ ├── shadowVert.js │ │ │ │ ├── videoFrag.js │ │ │ │ └── videoVert.js │ │ │ ├── xr-ar-2dmarker/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-ar-basic/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-ar-body/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-ar-body-3d/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-ar-camera/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-ar-face/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-ar-face-3d/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-ar-hand/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-ar-hand-3d/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-ar-osdmarker/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-ar-shoe/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-ar-threeDof/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-ar-vio-depth/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-ar-vio-marker/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-basic/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-basic-alpha/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-basic-animation/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-basic-envData/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-basic-light/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-basic-postprocessing/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-basic-render-texture/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-basic-shadow/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-basic-share/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-basic-touch/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-basic-video/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-basic-visible-layer/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-beside-edge/ │ │ │ │ ├── config.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-classic-face/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-classic-osd/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-classic-perspect/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-classic-portal/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-classic-video/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-classic-wxball/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-custom-logic/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-custom-render/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-customParticle-firework/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ └── index.wxml │ │ │ ├── xr-customParticle-meshEmitter/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ └── index.wxml │ │ │ ├── xr-customParticle-orb/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ └── index.wxml │ │ │ ├── xr-customParticle-portal/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ └── index.wxml │ │ │ ├── xr-customParticle-shapeEmitter/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ └── index.wxml │ │ │ ├── xr-demo-viewer/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-gltf-animation/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-gltf-compressTextures/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-gltf-damageHelmet/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-gltf-light-loading/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-gltf-lightsPunctual/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-gltf-morph/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-gltf-sheen/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-gltf-specularGlossiness/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-gltf-textureTransform/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-gltf-transmission/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-gltf-unlit/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-last-record/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-particle-custom/ │ │ │ │ ├── earring.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ └── index.wxml │ │ │ ├── xr-particle-firework/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ └── index.wxml │ │ │ ├── xr-particle-meshEmitter/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── specialCylinder.js │ │ │ ├── xr-particle-orb/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ └── index.wxml │ │ │ ├── xr-particle-portal/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ └── index.wxml │ │ │ ├── xr-particle-shapeEmitter/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ └── index.wxml │ │ │ ├── xr-physics-shoot/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-physics-throw/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-scan-render/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── xr-scan-team/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── pages/ │ │ │ ├── ar/ │ │ │ │ ├── scene-ar-2dmarker/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-ar-basic/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-ar-body/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-ar-body-3d/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-ar-camera/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-ar-face/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-ar-face-3d/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-ar-hand/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-ar-hand-3d/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-ar-osdmarker/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-ar-shoe/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-ar-threeDof/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-ar-vio-depth/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ └── scene-ar-vio-marker/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── ar-classic/ │ │ │ │ ├── scene-classic-face/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-classic-osd/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-classic-perspect/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-classic-portal/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-classic-video/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ └── scene-classic-wxball/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── basic/ │ │ │ │ ├── scene-basic/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-basic-alpha/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-basic-animation/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-basic-envData/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-basic-light/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-basic-particle/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-basic-postprocessing/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-basic-render-texture/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-basic-shadow/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-basic-share/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-basic-touch/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-basic-video/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ └── scene-basic-visible-layer/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── behavior-scene/ │ │ │ │ ├── scene-ready.js │ │ │ │ └── util.js │ │ │ ├── custom/ │ │ │ │ ├── scene-custom-logic/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ └── scene-custom-render/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── customParticle/ │ │ │ │ ├── scene-customParticle-firework/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-customParticle-meshEmitter/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-customParticle-orb/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-customParticle-portal/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ └── scene-customParticle-shapeEmitter/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── gltf/ │ │ │ │ ├── scene-gltf-animation/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-gltf-compressTextures/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-gltf-damageHelmet/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-gltf-light-loading/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-gltf-lightsPunctual/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-gltf-morph/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-gltf-sheen/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-gltf-specularGlossiness/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-gltf-textureTransform/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-gltf-transmission/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ └── scene-gltf-unlit/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── index/ │ │ │ │ ├── data/ │ │ │ │ │ └── index.js │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── particle/ │ │ │ │ ├── scene-particle-custom/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-particle-firework/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-particle-meshEmitter/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-particle-orb/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ ├── scene-particle-portal/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ └── scene-particle-shapeEmitter/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── physics/ │ │ │ │ ├── scene-physics-shoot/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ └── scene-physics-throw/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── scan/ │ │ │ │ ├── scene-scan-render/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ └── scene-scan-team/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── scene-beside-edge/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── scene-last-record/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── template/ │ │ │ ├── xr-template-arGlasses/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-arLine/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-arPreview/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-arui/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-blendDouble/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-control/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-dissolve/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-featherVideo/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-frameEffect/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-geometry/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-gltfAnimation/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-gltfEdit/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-gltfOcclusion/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-gltfUVAnimation/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-loading/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-lookat/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-markerCenter/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-markerLock/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-message/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-pbr/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-planeShadow/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-removeBlack/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-select/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-share/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-textEdit/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-toon/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ ├── xr-template-tracker/ │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ └── index.wxss │ │ │ └── xr-template-volumeVideo/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxss │ │ │ └── planeShadow.js │ │ └── xr-custom/ │ │ ├── animations/ │ │ │ └── XrTeamCameraAnimation.ts │ │ ├── assets/ │ │ │ ├── effect-last-record-final.ts │ │ │ ├── effect-planeShadow.ts │ │ │ ├── effect-removeBlack.ts │ │ │ ├── effect-shining.ts │ │ │ ├── effect-toon.js │ │ │ ├── geometry-specialCylinder.js │ │ │ ├── geometry-star.ts │ │ │ ├── standard-shader/ │ │ │ │ ├── bsdfs.js │ │ │ │ ├── commonFrag.js │ │ │ │ ├── commonVert.js │ │ │ │ ├── customPBR.js │ │ │ │ └── pbr.js │ │ │ └── toon-shader/ │ │ │ ├── common.js │ │ │ ├── outlineFrag.js │ │ │ ├── outlineVert.js │ │ │ ├── skinningDefine.js │ │ │ ├── toonFrag.js │ │ │ └── toonVert.js │ │ ├── components/ │ │ │ ├── AutoRotate.ts │ │ │ └── Particle/ │ │ │ ├── Shape/ │ │ │ │ ├── BasicShapeEmitter.ts │ │ │ │ ├── BoxShapeEmitter.ts │ │ │ │ ├── PointShapeEmitter.ts │ │ │ │ ├── SphereShapeEmitter.ts │ │ │ │ └── emitter.ts │ │ │ ├── SystemProperty/ │ │ │ │ ├── BasicParticle.ts │ │ │ │ ├── ParticleInstance.ts │ │ │ │ └── ParticleInterface.ts │ │ │ ├── Util/ │ │ │ │ ├── Gradient.ts │ │ │ │ └── SubEmitter.ts │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── elements/ │ │ ├── xr-auto-rotate-touchable-gltf.ts │ │ ├── xr-custom-particle.ts │ │ └── xr-shining-star.ts │ ├── page/ │ │ ├── API/ │ │ │ ├── components/ │ │ │ │ └── set-tab-bar/ │ │ │ │ ├── set-tab-bar.js │ │ │ │ ├── set-tab-bar.json │ │ │ │ ├── set-tab-bar.wxml │ │ │ │ └── set-tab-bar.wxss │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── ad/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxss │ │ │ ├── optimize-ad/ │ │ │ │ ├── home-large-card/ │ │ │ │ │ ├── home-large-card.js │ │ │ │ │ ├── home-large-card.json │ │ │ │ │ ├── home-large-card.wxml │ │ │ │ │ └── home-large-card.wxss │ │ │ │ ├── home-small-card/ │ │ │ │ │ ├── home-small-card.js │ │ │ │ │ ├── home-small-card.json │ │ │ │ │ ├── home-small-card.wxml │ │ │ │ │ └── home-small-card.wxss │ │ │ │ ├── optimize-ad.js │ │ │ │ ├── optimize-ad.json │ │ │ │ ├── optimize-ad.wxml │ │ │ │ ├── optimize-ad.wxss │ │ │ │ ├── other-large-card/ │ │ │ │ │ ├── other-large-card.js │ │ │ │ │ ├── other-large-card.json │ │ │ │ │ ├── other-large-card.wxml │ │ │ │ │ └── other-large-card.wxss │ │ │ │ └── other-small-card/ │ │ │ │ ├── other-small-card.js │ │ │ │ ├── other-small-card.json │ │ │ │ ├── other-small-card.wxml │ │ │ │ └── other-small-card.wxss │ │ │ └── smart-ad/ │ │ │ ├── example1/ │ │ │ │ ├── example1.js │ │ │ │ ├── example1.json │ │ │ │ ├── example1.wxml │ │ │ │ └── example1.wxss │ │ │ ├── example2/ │ │ │ │ ├── example2.js │ │ │ │ ├── example2.json │ │ │ │ ├── example2.wxml │ │ │ │ └── example2.wxss │ │ │ ├── example3/ │ │ │ │ ├── example3.js │ │ │ │ ├── example3.json │ │ │ │ ├── example3.wxml │ │ │ │ └── example3.wxss │ │ │ ├── smart-ad.js │ │ │ ├── smart-ad.json │ │ │ ├── smart-ad.wxml │ │ │ └── smart-ad.wxss │ │ ├── animation/ │ │ │ ├── index.json │ │ │ ├── index.ts │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── cloud/ │ │ │ ├── README.md │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxss │ │ │ └── resources/ │ │ │ └── db_dump/ │ │ │ ├── perm1.json │ │ │ ├── perm2.json │ │ │ ├── perm3.json │ │ │ └── perm4.json │ │ ├── common/ │ │ │ ├── common.wxss │ │ │ ├── foot.wxml │ │ │ ├── head.wxml │ │ │ ├── index-skyline.wxss │ │ │ ├── index.wxss │ │ │ └── lib/ │ │ │ └── weui.wxss │ │ ├── component/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── extend/ │ │ ├── base/ │ │ │ ├── CustomPage.js │ │ │ └── behaviors/ │ │ │ └── theme.js │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── sitemap.json │ ├── util/ │ │ ├── fps_helper.ts │ │ └── util.js │ └── workers/ │ ├── fib/ │ │ └── index.js │ └── gaussianSplatting/ │ └── index.js ├── package.json ├── project.config.json ├── project.private.config.json ├── sitemap.json └── test/ └── index.spec.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .eslintignore ================================================ /vendor /node_modules /cloudfunctions/ARDemo/cloud-functions-tools/test/svrkit-utils/example /cloudfunctions/ARDemo/wx-server-sdk-wxg-service/index.js /miniprogram/packageSkylineExamples /miniprogram/_commons/0.js /miniprogram/packageAPI/pages/ar/3dmarker-ar/protobuf /miniprogram/packageAPI/components/tdesign-miniprogram /miniprogram/packageAPI/pages/ar/gaussian-splatting/util/gl-matrix-min.js /miniprogram/packageChatTool/components/tdesign-miniprogram ================================================ FILE: .eslintrc.js ================================================ module.exports = { extends: [ 'airbnb-base', 'plugin:promise/recommended' ], parserOptions: { ecmaVersion: 9, ecmaFeatures: { jsx: false }, sourceType: 'module' }, env: { es6: true, node: true, jest: true }, plugins: [ 'import', 'node', 'promise' ], rules: { 'arrow-parens': 'off', 'comma-dangle': [ 'error', 'only-multiline' ], complexity: ['error', 10], 'func-names': 'off', 'global-require': 'off', 'handle-callback-err': [ 'error', '^(err|error)$' ], 'import/no-unresolved': [ 'error', { caseSensitive: true, commonjs: true, ignore: ['^[^.]'] } ], 'import/prefer-default-export': 'off', 'linebreak-style': 'off', 'no-catch-shadow': 'error', 'no-continue': 'off', 'no-div-regex': 'warn', 'no-else-return': 'off', 'no-param-reassign': 'off', 'no-plusplus': 'off', 'no-shadow': 'off', // enable console for this project 'no-console': 'off', 'no-multi-assign': 'off', 'no-underscore-dangle': 'off', 'node/no-deprecated-api': 'error', 'node/process-exit-as-throw': 'error', 'object-curly-spacing': [ 'error', 'always' ], 'operator-linebreak': [ 'error', 'after', { overrides: { ':': 'before', '?': 'before' } } ], 'prefer-arrow-callback': 'off', 'prefer-destructuring': 'off', 'prefer-template': 'off', 'quote-props': [ 1, 'as-needed', { unnecessary: true } ], semi: [ 'error', 'never' ] }, globals: { window: true, document: true, App: true, Page: true, Component: true, Behavior: true, wx: true, worker: true, getApp: true } } ================================================ FILE: .github/workflows/pr-lint-check.yml ================================================ name: PR Lint Check on: pull_request: branches: [ master ] jobs: eslint-changed: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Install dependencies run: npm install - name: Get changed files id: changed-files uses: tj-actions/changed-files@v46 with: since_last_remote_commit: 'true' - name: Filter JavaScript files id: filter-js run: | changed_js_files=$(echo '${{ steps.changed-files.outputs.all_changed_files }}' | grep -E '\.(js|ts|jsx|tsx)$' || true) echo "changed_js_files=${changed_js_files}" >> $GITHUB_OUTPUT - name: Run ESLint on changed JS files if: ${{ steps.filter-js.outputs.changed_js_files != '' }} run: | echo "Changed JS files: ${{ steps.filter-js.outputs.changed_js_files }}" npx eslint ${{ steps.filter-js.outputs.changed_js_files }} ================================================ FILE: .gitignore ================================================ *swp .idea .DS_Store package-lock.json logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* node_modules miniprogram_npm ================================================ FILE: .gitmodules ================================================ [submodule "miniprogram/packageSkylineExamples"] path = miniprogram/packageSkylineExamples url = https://github.com/wechat-miniprogram/awesome-skyline.git ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2018 wechat-miniprogram 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. ================================================ FILE: README.md ================================================ # 微信小程序示例 微信小程序示例源码,欢迎扫描以下小程序码体验。 > 提示:请使用微信开发者工具或微信客户端 6.7.2 及以上版本运行。 ## 使用 ``` npm run init ``` 完成上述步骤后,使用微信开发者工具,点击【工具-构建npm】 使用[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html)打开该示例代码,云开发环境搭建请参考[云开发示例说明](https://github.com/wechat-miniprogram/miniprogram-demo/blob/master/miniprogram/page/cloud/README.md)。 ## 贡献 如果你有 bug 反馈或其他任何建议,欢迎提 issue 给我们。 如果你愿意一起来完善小程序示例,欢迎通过 PR 的方式贡献代码。为了保证代码风格的统一,在编写代码之前,请在项目根目录miniprogram下运行以下命令安装依赖: ``` npm install ``` 同时,确保你的代码可以通过 Lint 检查: ``` npm run lint ``` ## 截图 ================================================ FILE: build/ci.js ================================================ import path from 'path' import { fileURLToPath } from 'url' import fs from 'fs' import ci from 'miniprogram-ci' import packageJson from '../package.json' with { type: 'json' } const __filename = fileURLToPath(import.meta.url) const __dirname = path.dirname(__filename) const privateKeyPath = path.resolve(__dirname, './key') // 检查私钥文件是否已存在 if (!fs.existsSync(privateKeyPath)) { const privateKeyContent = process.env.WX_PRIVATE_KEY if (!privateKeyContent) { throw new Error('未找到私钥内容,请确保已正确配置 GitHub Secrets') } console.log('>>>>写入私钥文件:', privateKeyPath); fs.writeFileSync(privateKeyPath, privateKeyContent) } const project = new ci.Project({ appid: 'wxe5f52902cf4de896', type: 'miniProgram', projectPath: path.resolve(__dirname, '../'), privateKeyPath: path.resolve(__dirname, './key'), ignores: [path.resolve(__dirname, '../miniprogram/node_modules/**/*')] }) const robotNumber = 2 const params = { onProgressUpdate: console.log, robot: robotNumber, version: packageJson.version, desc: packageJson.bundleDescription, setting: { es7: true, minifyJS: true, minifyWXML: true, minifyWXSS: true, codeProtect: false, autoPrefixWXSS: true, ignoreUploadUnusedFiles: true }, } await ci.packNpm(project, {}) ci.upload({ project, ...params }).then(res => { console.debug('>>>>upload res', res) }).catch(err => { console.error('>>>>upload error', err) throw err }).finally(() => { // 删除临时私钥文件 fs.unlinkSync(privateKeyPath) }) ================================================ FILE: cloudfunctions/ARDemo/README.md ================================================ # 三维识别与重建云服务 ## proto更新 ### 依赖安装 ``` // ARModel 下 tnpm install --save-dev @tencent/cloud-functions-tools@latest ``` ### 基于 proto 文件生成脚本逻辑 ``` // ARModel 下 npm run svrkit ``` ## 服务更新 ``` 1. 安装 ARModel 下本地 npm 依赖 2. 云函数环境切为 test环境 3. ARModel 右键上传所有文件(由于有@tencent的子包) ``` ================================================ FILE: cloudfunctions/ARDemo/cloud-functions-tools/bin/svrkit-utils ================================================ #!/usr/bin/env node const path = require('path') const yargs = require('yargs') yargs .usage('Usage: $0 -c [config] -o [output]') .example('$0 -c ./svrkit.config.js -o ./svrkit-utils.js') .alias('c', 'config') .describe('c', 'svrkit config js file path') .alias('o', 'output') .describe('o', 'svrkit-utils output file path, defaults to svrkit-utils.js under the same folder of svrkit config file') .describe('--keep-case', 'keeps field casing instead of converting to camcel case') .demandOption(['c']) .help('h') .alias('h', 'help') .argv const cli = require(path.join(__dirname, '../cli/svrkit-utils.js')) const ret = cli.main(process.argv.slice(2)) if (typeof ret === 'number') { process.exit(ret) } ================================================ FILE: cloudfunctions/ARDemo/cloud-functions-tools/cli/svrkit-utils-template.js ================================================ function generate(options) { if (!options) { throw new Error('options must be provided') } const { serviceName, funcName, data } = options const serviceConfig = config.find(c => c.serviceName === serviceName) if (!serviceConfig) { throw new Error('service not found') } if (!serviceConfig.functions[funcName]) { throw new Error('function not found') } const reqProtoName = serviceConfig.functions[funcName].req const reqProto = proto[reqProtoName] if (!reqProto) { throw new Error('request proto not found') } const resProtoName = serviceConfig.functions[funcName].res const resProto = resProtoName && proto[resProtoName] const reqProtoVerifyErr = reqProto.verify(data) if (reqProtoVerifyErr) { throw new Error(`verify proto data error: ${reqProtoVerifyErr}`) } const reqProtoJSON = protoJSON.nested[reqProtoName] if (reqProtoJSON && reqProtoJSON.fields) { if (Object.prototype.toString.call(data).slice(8, -1) === 'Object') { for (const key in data) { if (!reqProtoJSON.fields[key]) { throw new Error(`'${key}' doesn't exist in '${reqProtoName}' proto, valid keys are ${Object.keys(reqProtoJSON.fields)}`) } } } else { throw new Error('data must be object') } } return { data: { serviceName, funcName, magic: serviceConfig.magic, cmdid: serviceConfig.functions[funcName].cmdid, existResp: Boolean(resProto), reqBodyBuffer: reqProto.encode(data).finish(), }, reqProto, resProto, decode: buf => resProto && resProto.decode(buf) } } function generateV2(options) { if (!options) { throw new Error('options must be provided') } const { apiName, data } = options const apiConfig = config.find(c => c.apiName === apiName) const reqProtoName = apiConfig.req const reqProto = proto[reqProtoName] if (!reqProto) { throw new Error('request proto not found') } const resProtoName = apiConfig.res const resProto = proto[resProtoName] const reqProtoVerifyErr = reqProto.verify(data) if (reqProtoVerifyErr) { throw new Error(`verify proto data error: ${reqProtoVerifyErr}`) } const reqProtoJSON = protoJSON.nested[reqProtoName] if (reqProtoJSON && reqProtoJSON.fields) { if (Object.prototype.toString.call(data).slice(8, -1) === 'Object') { for (const key in data) { if (!reqProtoJSON.fields[key]) { throw new Error(`'${key}' doesn't exist in '${reqProtoName}' proto, valid keys are ${Object.keys(reqProtoJSON.fields)}`) } } } else { throw new Error('data must be object') } } return { data: { apiName, reqBodyBuffer: reqProto.encode(data).finish(), }, reqProto, resProto, decode: buf => resProto && resProto.decode(buf) } } module.exports = { generate, generateV2, } ================================================ FILE: cloudfunctions/ARDemo/cloud-functions-tools/cli/svrkit-utils.js ================================================ const fs = require('fs') const path = require('path') const yargs = require('yargs') const chalk = require('chalk') const debug = require('debug')('cli') const pbjs = require('protobufjs/cli/pbjs') const log = (...msg) => { console.log(chalk.blue('svrkit-utils'), ...msg) } function main() { debug('process.cwd', process.cwd()) debug('yargs.argv', yargs.argv) if (yargs.argv.config) { const configPath = path.resolve(process.cwd(), yargs.argv.config) const config = require(configPath) const protos = config.map(c => path.resolve(path.dirname(configPath), c.proto)) if (yargs.argv.output) { if (!yargs.argv.output.endsWith('.js')) { throw new Error('output file name must ends with .js') } } const outputDest = yargs.argv.output || path.resolve(path.dirname(configPath), 'svrkit-utils.js') const outputFileName = path.basename(outputDest) const outputFilePath = path.resolve(process.cwd(), outputDest) debug('outputDest', outputDest) debug('outputFilePath', outputFilePath) const staticModuleFileName = `${outputFileName.slice(0, -3)}.static.js` const staticModuleFilePath = path.resolve(path.dirname(outputFilePath), staticModuleFileName) const staticJsonFileName = `${outputFileName.slice(0, -3)}.static.json` const staticJsonFilePath = path.resolve(path.dirname(outputFilePath), staticJsonFileName) log('generating static module') const pbjsArgs = ['-t', 'static-module', '-w', 'commonjs', '-l', 'eslint-disable', '-o', staticModuleFilePath, ...protos] if (yargs.argv.keepCase) { pbjsArgs.unshift('--keep-case') } pbjs.main(pbjsArgs, (err, out) => { if (err) { throw err } const staticModuleContent = fs.readFileSync(staticModuleFilePath, 'utf8') fs.writeFileSync(staticModuleFilePath, `// #lizard forgives ${staticModuleContent}`, 'utf8') log('static module generated') log('generating json descriptors') pbjs.main(['-t', 'json', '-o', staticJsonFilePath, ...protos], (err, out) => { if (err) { throw err } log('json descriptors generated') try { const protoUtils = fs.readFileSync(path.join(__dirname, './svrkit-utils-template.js'), 'utf8') let svrkitConfigRelativePath = path.relative(path.dirname(outputDest), configPath) if (!svrkitConfigRelativePath.startsWith('.')) { svrkitConfigRelativePath = `./${svrkitConfigRelativePath}` } const output = ` const config = require('${svrkitConfigRelativePath}') const proto = require('./${staticModuleFileName}') const protoJSON = require('./${staticJsonFileName}') ${protoUtils} ` fs.writeFileSync(outputFilePath, output, 'utf8') log(`${outputFileName} generated`) } catch (err) { throw err } }) }) } else { throw new Error('config file must be provided') } } module.exports = { main, } ================================================ FILE: cloudfunctions/ARDemo/cloud-functions-tools/package.json ================================================ { "name": "@tencent/cloud-functions-tools", "version": "1.5.1", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "alankldeng", "license": "ISC", "bin": { "svrkit-utils": "bin/svrkit-utils" }, "dependencies": { "chalk": "^2.4.1", "debug": "^4.1.0", "protobufjs": "^6.8.8", "yargs": "^12.0.5" } } ================================================ FILE: cloudfunctions/ARDemo/cloud-functions-tools/test/svrkit-utils/example/bundle.js ================================================ /*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/ "use strict"; var $protobuf = require("protobufjs/minimal"); // Common aliases var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util; // Exported root namespace var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {}); $root.GenWxaCloudTmpCodeReq = (function() { /** * Properties of a GenWxaCloudTmpCodeReq. * @exports IGenWxaCloudTmpCodeReq * @interface IGenWxaCloudTmpCodeReq * @property {number|null} [CloudPlatform] GenWxaCloudTmpCodeReq CloudPlatform * @property {number|null} [AppUin] GenWxaCloudTmpCodeReq AppUin * @property {number|null} [UserUin] GenWxaCloudTmpCodeReq UserUin */ /** * Constructs a new GenWxaCloudTmpCodeReq. * @exports GenWxaCloudTmpCodeReq * @classdesc Represents a GenWxaCloudTmpCodeReq. * @implements IGenWxaCloudTmpCodeReq * @constructor * @param {IGenWxaCloudTmpCodeReq=} [properties] Properties to set */ function GenWxaCloudTmpCodeReq(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * GenWxaCloudTmpCodeReq CloudPlatform. * @member {number} CloudPlatform * @memberof GenWxaCloudTmpCodeReq * @instance */ GenWxaCloudTmpCodeReq.prototype.CloudPlatform = 0; /** * GenWxaCloudTmpCodeReq AppUin. * @member {number} AppUin * @memberof GenWxaCloudTmpCodeReq * @instance */ GenWxaCloudTmpCodeReq.prototype.AppUin = 0; /** * GenWxaCloudTmpCodeReq UserUin. * @member {number} UserUin * @memberof GenWxaCloudTmpCodeReq * @instance */ GenWxaCloudTmpCodeReq.prototype.UserUin = 0; /** * Creates a new GenWxaCloudTmpCodeReq instance using the specified properties. * @function create * @memberof GenWxaCloudTmpCodeReq * @static * @param {IGenWxaCloudTmpCodeReq=} [properties] Properties to set * @returns {GenWxaCloudTmpCodeReq} GenWxaCloudTmpCodeReq instance */ GenWxaCloudTmpCodeReq.create = function create(properties) { return new GenWxaCloudTmpCodeReq(properties); }; /** * Encodes the specified GenWxaCloudTmpCodeReq message. Does not implicitly {@link GenWxaCloudTmpCodeReq.verify|verify} messages. * @function encode * @memberof GenWxaCloudTmpCodeReq * @static * @param {IGenWxaCloudTmpCodeReq} message GenWxaCloudTmpCodeReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GenWxaCloudTmpCodeReq.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.CloudPlatform != null && message.hasOwnProperty("CloudPlatform")) writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.CloudPlatform); if (message.AppUin != null && message.hasOwnProperty("AppUin")) writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.AppUin); if (message.UserUin != null && message.hasOwnProperty("UserUin")) writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.UserUin); return writer; }; /** * Encodes the specified GenWxaCloudTmpCodeReq message, length delimited. Does not implicitly {@link GenWxaCloudTmpCodeReq.verify|verify} messages. * @function encodeDelimited * @memberof GenWxaCloudTmpCodeReq * @static * @param {IGenWxaCloudTmpCodeReq} message GenWxaCloudTmpCodeReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GenWxaCloudTmpCodeReq.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a GenWxaCloudTmpCodeReq message from the specified reader or buffer. * @function decode * @memberof GenWxaCloudTmpCodeReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {GenWxaCloudTmpCodeReq} GenWxaCloudTmpCodeReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GenWxaCloudTmpCodeReq.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.GenWxaCloudTmpCodeReq(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.CloudPlatform = reader.uint32(); break; case 2: message.AppUin = reader.uint32(); break; case 3: message.UserUin = reader.uint32(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a GenWxaCloudTmpCodeReq message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof GenWxaCloudTmpCodeReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {GenWxaCloudTmpCodeReq} GenWxaCloudTmpCodeReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GenWxaCloudTmpCodeReq.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a GenWxaCloudTmpCodeReq message. * @function verify * @memberof GenWxaCloudTmpCodeReq * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ GenWxaCloudTmpCodeReq.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.CloudPlatform != null && message.hasOwnProperty("CloudPlatform")) if (!$util.isInteger(message.CloudPlatform)) return "CloudPlatform: integer expected"; if (message.AppUin != null && message.hasOwnProperty("AppUin")) if (!$util.isInteger(message.AppUin)) return "AppUin: integer expected"; if (message.UserUin != null && message.hasOwnProperty("UserUin")) if (!$util.isInteger(message.UserUin)) return "UserUin: integer expected"; return null; }; /** * Creates a GenWxaCloudTmpCodeReq message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof GenWxaCloudTmpCodeReq * @static * @param {Object.} object Plain object * @returns {GenWxaCloudTmpCodeReq} GenWxaCloudTmpCodeReq */ GenWxaCloudTmpCodeReq.fromObject = function fromObject(object) { if (object instanceof $root.GenWxaCloudTmpCodeReq) return object; var message = new $root.GenWxaCloudTmpCodeReq(); if (object.CloudPlatform != null) message.CloudPlatform = object.CloudPlatform >>> 0; if (object.AppUin != null) message.AppUin = object.AppUin >>> 0; if (object.UserUin != null) message.UserUin = object.UserUin >>> 0; return message; }; /** * Creates a plain object from a GenWxaCloudTmpCodeReq message. Also converts values to other types if specified. * @function toObject * @memberof GenWxaCloudTmpCodeReq * @static * @param {GenWxaCloudTmpCodeReq} message GenWxaCloudTmpCodeReq * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ GenWxaCloudTmpCodeReq.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.CloudPlatform = 0; object.AppUin = 0; object.UserUin = 0; } if (message.CloudPlatform != null && message.hasOwnProperty("CloudPlatform")) object.CloudPlatform = message.CloudPlatform; if (message.AppUin != null && message.hasOwnProperty("AppUin")) object.AppUin = message.AppUin; if (message.UserUin != null && message.hasOwnProperty("UserUin")) object.UserUin = message.UserUin; return object; }; /** * Converts this GenWxaCloudTmpCodeReq to JSON. * @function toJSON * @memberof GenWxaCloudTmpCodeReq * @instance * @returns {Object.} JSON object */ GenWxaCloudTmpCodeReq.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return GenWxaCloudTmpCodeReq; })(); $root.GenWxaCloudTmpCodeResp = (function() { /** * Properties of a GenWxaCloudTmpCodeResp. * @exports IGenWxaCloudTmpCodeResp * @interface IGenWxaCloudTmpCodeResp * @property {string|null} [TmpCode] GenWxaCloudTmpCodeResp TmpCode */ /** * Constructs a new GenWxaCloudTmpCodeResp. * @exports GenWxaCloudTmpCodeResp * @classdesc Represents a GenWxaCloudTmpCodeResp. * @implements IGenWxaCloudTmpCodeResp * @constructor * @param {IGenWxaCloudTmpCodeResp=} [properties] Properties to set */ function GenWxaCloudTmpCodeResp(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * GenWxaCloudTmpCodeResp TmpCode. * @member {string} TmpCode * @memberof GenWxaCloudTmpCodeResp * @instance */ GenWxaCloudTmpCodeResp.prototype.TmpCode = ""; /** * Creates a new GenWxaCloudTmpCodeResp instance using the specified properties. * @function create * @memberof GenWxaCloudTmpCodeResp * @static * @param {IGenWxaCloudTmpCodeResp=} [properties] Properties to set * @returns {GenWxaCloudTmpCodeResp} GenWxaCloudTmpCodeResp instance */ GenWxaCloudTmpCodeResp.create = function create(properties) { return new GenWxaCloudTmpCodeResp(properties); }; /** * Encodes the specified GenWxaCloudTmpCodeResp message. Does not implicitly {@link GenWxaCloudTmpCodeResp.verify|verify} messages. * @function encode * @memberof GenWxaCloudTmpCodeResp * @static * @param {IGenWxaCloudTmpCodeResp} message GenWxaCloudTmpCodeResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GenWxaCloudTmpCodeResp.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.TmpCode != null && message.hasOwnProperty("TmpCode")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.TmpCode); return writer; }; /** * Encodes the specified GenWxaCloudTmpCodeResp message, length delimited. Does not implicitly {@link GenWxaCloudTmpCodeResp.verify|verify} messages. * @function encodeDelimited * @memberof GenWxaCloudTmpCodeResp * @static * @param {IGenWxaCloudTmpCodeResp} message GenWxaCloudTmpCodeResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GenWxaCloudTmpCodeResp.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a GenWxaCloudTmpCodeResp message from the specified reader or buffer. * @function decode * @memberof GenWxaCloudTmpCodeResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {GenWxaCloudTmpCodeResp} GenWxaCloudTmpCodeResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GenWxaCloudTmpCodeResp.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.GenWxaCloudTmpCodeResp(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.TmpCode = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a GenWxaCloudTmpCodeResp message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof GenWxaCloudTmpCodeResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {GenWxaCloudTmpCodeResp} GenWxaCloudTmpCodeResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GenWxaCloudTmpCodeResp.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a GenWxaCloudTmpCodeResp message. * @function verify * @memberof GenWxaCloudTmpCodeResp * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ GenWxaCloudTmpCodeResp.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.TmpCode != null && message.hasOwnProperty("TmpCode")) if (!$util.isString(message.TmpCode)) return "TmpCode: string expected"; return null; }; /** * Creates a GenWxaCloudTmpCodeResp message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof GenWxaCloudTmpCodeResp * @static * @param {Object.} object Plain object * @returns {GenWxaCloudTmpCodeResp} GenWxaCloudTmpCodeResp */ GenWxaCloudTmpCodeResp.fromObject = function fromObject(object) { if (object instanceof $root.GenWxaCloudTmpCodeResp) return object; var message = new $root.GenWxaCloudTmpCodeResp(); if (object.TmpCode != null) message.TmpCode = String(object.TmpCode); return message; }; /** * Creates a plain object from a GenWxaCloudTmpCodeResp message. Also converts values to other types if specified. * @function toObject * @memberof GenWxaCloudTmpCodeResp * @static * @param {GenWxaCloudTmpCodeResp} message GenWxaCloudTmpCodeResp * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ GenWxaCloudTmpCodeResp.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) object.TmpCode = ""; if (message.TmpCode != null && message.hasOwnProperty("TmpCode")) object.TmpCode = message.TmpCode; return object; }; /** * Converts this GenWxaCloudTmpCodeResp to JSON. * @function toJSON * @memberof GenWxaCloudTmpCodeResp * @instance * @returns {Object.} JSON object */ GenWxaCloudTmpCodeResp.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return GenWxaCloudTmpCodeResp; })(); $root.GetWeAppMemberByUserReq = (function() { /** * Properties of a GetWeAppMemberByUserReq. * @exports IGetWeAppMemberByUserReq * @interface IGetWeAppMemberByUserReq * @property {number|null} [useruin] GetWeAppMemberByUserReq useruin * @property {number|null} [type] GetWeAppMemberByUserReq type * @property {number|null} [status] GetWeAppMemberByUserReq status */ /** * Constructs a new GetWeAppMemberByUserReq. * @exports GetWeAppMemberByUserReq * @classdesc Represents a GetWeAppMemberByUserReq. * @implements IGetWeAppMemberByUserReq * @constructor * @param {IGetWeAppMemberByUserReq=} [properties] Properties to set */ function GetWeAppMemberByUserReq(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * GetWeAppMemberByUserReq useruin. * @member {number} useruin * @memberof GetWeAppMemberByUserReq * @instance */ GetWeAppMemberByUserReq.prototype.useruin = 0; /** * GetWeAppMemberByUserReq type. * @member {number} type * @memberof GetWeAppMemberByUserReq * @instance */ GetWeAppMemberByUserReq.prototype.type = 0; /** * GetWeAppMemberByUserReq status. * @member {number} status * @memberof GetWeAppMemberByUserReq * @instance */ GetWeAppMemberByUserReq.prototype.status = 0; /** * Creates a new GetWeAppMemberByUserReq instance using the specified properties. * @function create * @memberof GetWeAppMemberByUserReq * @static * @param {IGetWeAppMemberByUserReq=} [properties] Properties to set * @returns {GetWeAppMemberByUserReq} GetWeAppMemberByUserReq instance */ GetWeAppMemberByUserReq.create = function create(properties) { return new GetWeAppMemberByUserReq(properties); }; /** * Encodes the specified GetWeAppMemberByUserReq message. Does not implicitly {@link GetWeAppMemberByUserReq.verify|verify} messages. * @function encode * @memberof GetWeAppMemberByUserReq * @static * @param {IGetWeAppMemberByUserReq} message GetWeAppMemberByUserReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GetWeAppMemberByUserReq.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.useruin != null && message.hasOwnProperty("useruin")) writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.useruin); if (message.type != null && message.hasOwnProperty("type")) writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.type); if (message.status != null && message.hasOwnProperty("status")) writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.status); return writer; }; /** * Encodes the specified GetWeAppMemberByUserReq message, length delimited. Does not implicitly {@link GetWeAppMemberByUserReq.verify|verify} messages. * @function encodeDelimited * @memberof GetWeAppMemberByUserReq * @static * @param {IGetWeAppMemberByUserReq} message GetWeAppMemberByUserReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GetWeAppMemberByUserReq.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a GetWeAppMemberByUserReq message from the specified reader or buffer. * @function decode * @memberof GetWeAppMemberByUserReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {GetWeAppMemberByUserReq} GetWeAppMemberByUserReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GetWeAppMemberByUserReq.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.GetWeAppMemberByUserReq(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.useruin = reader.uint32(); break; case 2: message.type = reader.uint32(); break; case 3: message.status = reader.uint32(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a GetWeAppMemberByUserReq message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof GetWeAppMemberByUserReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {GetWeAppMemberByUserReq} GetWeAppMemberByUserReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GetWeAppMemberByUserReq.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a GetWeAppMemberByUserReq message. * @function verify * @memberof GetWeAppMemberByUserReq * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ GetWeAppMemberByUserReq.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.useruin != null && message.hasOwnProperty("useruin")) if (!$util.isInteger(message.useruin)) return "useruin: integer expected"; if (message.type != null && message.hasOwnProperty("type")) if (!$util.isInteger(message.type)) return "type: integer expected"; if (message.status != null && message.hasOwnProperty("status")) if (!$util.isInteger(message.status)) return "status: integer expected"; return null; }; /** * Creates a GetWeAppMemberByUserReq message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof GetWeAppMemberByUserReq * @static * @param {Object.} object Plain object * @returns {GetWeAppMemberByUserReq} GetWeAppMemberByUserReq */ GetWeAppMemberByUserReq.fromObject = function fromObject(object) { if (object instanceof $root.GetWeAppMemberByUserReq) return object; var message = new $root.GetWeAppMemberByUserReq(); if (object.useruin != null) message.useruin = object.useruin >>> 0; if (object.type != null) message.type = object.type >>> 0; if (object.status != null) message.status = object.status >>> 0; return message; }; /** * Creates a plain object from a GetWeAppMemberByUserReq message. Also converts values to other types if specified. * @function toObject * @memberof GetWeAppMemberByUserReq * @static * @param {GetWeAppMemberByUserReq} message GetWeAppMemberByUserReq * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ GetWeAppMemberByUserReq.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.useruin = 0; object.type = 0; object.status = 0; } if (message.useruin != null && message.hasOwnProperty("useruin")) object.useruin = message.useruin; if (message.type != null && message.hasOwnProperty("type")) object.type = message.type; if (message.status != null && message.hasOwnProperty("status")) object.status = message.status; return object; }; /** * Converts this GetWeAppMemberByUserReq to JSON. * @function toJSON * @memberof GetWeAppMemberByUserReq * @instance * @returns {Object.} JSON object */ GetWeAppMemberByUserReq.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return GetWeAppMemberByUserReq; })(); $root.WeAppMemberInfo = (function() { /** * Properties of a WeAppMemberInfo. * @exports IWeAppMemberInfo * @interface IWeAppMemberInfo * @property {number|null} [type] WeAppMemberInfo type * @property {number|null} [weappuin] WeAppMemberInfo weappuin * @property {number|null} [useruin] WeAppMemberInfo useruin * @property {number|null} [status] WeAppMemberInfo status * @property {number|null} [createtime] WeAppMemberInfo createtime * @property {number|null} [updatetime] WeAppMemberInfo updatetime * @property {string|null} [ticket] WeAppMemberInfo ticket */ /** * Constructs a new WeAppMemberInfo. * @exports WeAppMemberInfo * @classdesc Represents a WeAppMemberInfo. * @implements IWeAppMemberInfo * @constructor * @param {IWeAppMemberInfo=} [properties] Properties to set */ function WeAppMemberInfo(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * WeAppMemberInfo type. * @member {number} type * @memberof WeAppMemberInfo * @instance */ WeAppMemberInfo.prototype.type = 0; /** * WeAppMemberInfo weappuin. * @member {number} weappuin * @memberof WeAppMemberInfo * @instance */ WeAppMemberInfo.prototype.weappuin = 0; /** * WeAppMemberInfo useruin. * @member {number} useruin * @memberof WeAppMemberInfo * @instance */ WeAppMemberInfo.prototype.useruin = 0; /** * WeAppMemberInfo status. * @member {number} status * @memberof WeAppMemberInfo * @instance */ WeAppMemberInfo.prototype.status = 0; /** * WeAppMemberInfo createtime. * @member {number} createtime * @memberof WeAppMemberInfo * @instance */ WeAppMemberInfo.prototype.createtime = 0; /** * WeAppMemberInfo updatetime. * @member {number} updatetime * @memberof WeAppMemberInfo * @instance */ WeAppMemberInfo.prototype.updatetime = 0; /** * WeAppMemberInfo ticket. * @member {string} ticket * @memberof WeAppMemberInfo * @instance */ WeAppMemberInfo.prototype.ticket = ""; /** * Creates a new WeAppMemberInfo instance using the specified properties. * @function create * @memberof WeAppMemberInfo * @static * @param {IWeAppMemberInfo=} [properties] Properties to set * @returns {WeAppMemberInfo} WeAppMemberInfo instance */ WeAppMemberInfo.create = function create(properties) { return new WeAppMemberInfo(properties); }; /** * Encodes the specified WeAppMemberInfo message. Does not implicitly {@link WeAppMemberInfo.verify|verify} messages. * @function encode * @memberof WeAppMemberInfo * @static * @param {IWeAppMemberInfo} message WeAppMemberInfo message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ WeAppMemberInfo.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.type != null && message.hasOwnProperty("type")) writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.type); if (message.weappuin != null && message.hasOwnProperty("weappuin")) writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.weappuin); if (message.useruin != null && message.hasOwnProperty("useruin")) writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.useruin); if (message.status != null && message.hasOwnProperty("status")) writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.status); if (message.createtime != null && message.hasOwnProperty("createtime")) writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.createtime); if (message.updatetime != null && message.hasOwnProperty("updatetime")) writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.updatetime); if (message.ticket != null && message.hasOwnProperty("ticket")) writer.uint32(/* id 7, wireType 2 =*/58).string(message.ticket); return writer; }; /** * Encodes the specified WeAppMemberInfo message, length delimited. Does not implicitly {@link WeAppMemberInfo.verify|verify} messages. * @function encodeDelimited * @memberof WeAppMemberInfo * @static * @param {IWeAppMemberInfo} message WeAppMemberInfo message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ WeAppMemberInfo.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a WeAppMemberInfo message from the specified reader or buffer. * @function decode * @memberof WeAppMemberInfo * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {WeAppMemberInfo} WeAppMemberInfo * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ WeAppMemberInfo.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.WeAppMemberInfo(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.type = reader.uint32(); break; case 2: message.weappuin = reader.uint32(); break; case 3: message.useruin = reader.uint32(); break; case 4: message.status = reader.uint32(); break; case 5: message.createtime = reader.uint32(); break; case 6: message.updatetime = reader.uint32(); break; case 7: message.ticket = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a WeAppMemberInfo message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof WeAppMemberInfo * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {WeAppMemberInfo} WeAppMemberInfo * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ WeAppMemberInfo.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a WeAppMemberInfo message. * @function verify * @memberof WeAppMemberInfo * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ WeAppMemberInfo.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.type != null && message.hasOwnProperty("type")) if (!$util.isInteger(message.type)) return "type: integer expected"; if (message.weappuin != null && message.hasOwnProperty("weappuin")) if (!$util.isInteger(message.weappuin)) return "weappuin: integer expected"; if (message.useruin != null && message.hasOwnProperty("useruin")) if (!$util.isInteger(message.useruin)) return "useruin: integer expected"; if (message.status != null && message.hasOwnProperty("status")) if (!$util.isInteger(message.status)) return "status: integer expected"; if (message.createtime != null && message.hasOwnProperty("createtime")) if (!$util.isInteger(message.createtime)) return "createtime: integer expected"; if (message.updatetime != null && message.hasOwnProperty("updatetime")) if (!$util.isInteger(message.updatetime)) return "updatetime: integer expected"; if (message.ticket != null && message.hasOwnProperty("ticket")) if (!$util.isString(message.ticket)) return "ticket: string expected"; return null; }; /** * Creates a WeAppMemberInfo message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof WeAppMemberInfo * @static * @param {Object.} object Plain object * @returns {WeAppMemberInfo} WeAppMemberInfo */ WeAppMemberInfo.fromObject = function fromObject(object) { if (object instanceof $root.WeAppMemberInfo) return object; var message = new $root.WeAppMemberInfo(); if (object.type != null) message.type = object.type >>> 0; if (object.weappuin != null) message.weappuin = object.weappuin >>> 0; if (object.useruin != null) message.useruin = object.useruin >>> 0; if (object.status != null) message.status = object.status >>> 0; if (object.createtime != null) message.createtime = object.createtime >>> 0; if (object.updatetime != null) message.updatetime = object.updatetime >>> 0; if (object.ticket != null) message.ticket = String(object.ticket); return message; }; /** * Creates a plain object from a WeAppMemberInfo message. Also converts values to other types if specified. * @function toObject * @memberof WeAppMemberInfo * @static * @param {WeAppMemberInfo} message WeAppMemberInfo * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ WeAppMemberInfo.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.type = 0; object.weappuin = 0; object.useruin = 0; object.status = 0; object.createtime = 0; object.updatetime = 0; object.ticket = ""; } if (message.type != null && message.hasOwnProperty("type")) object.type = message.type; if (message.weappuin != null && message.hasOwnProperty("weappuin")) object.weappuin = message.weappuin; if (message.useruin != null && message.hasOwnProperty("useruin")) object.useruin = message.useruin; if (message.status != null && message.hasOwnProperty("status")) object.status = message.status; if (message.createtime != null && message.hasOwnProperty("createtime")) object.createtime = message.createtime; if (message.updatetime != null && message.hasOwnProperty("updatetime")) object.updatetime = message.updatetime; if (message.ticket != null && message.hasOwnProperty("ticket")) object.ticket = message.ticket; return object; }; /** * Converts this WeAppMemberInfo to JSON. * @function toJSON * @memberof WeAppMemberInfo * @instance * @returns {Object.} JSON object */ WeAppMemberInfo.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return WeAppMemberInfo; })(); $root.WeAppMemberInfoList = (function() { /** * Properties of a WeAppMemberInfoList. * @exports IWeAppMemberInfoList * @interface IWeAppMemberInfoList * @property {Array.|null} [infos] WeAppMemberInfoList infos */ /** * Constructs a new WeAppMemberInfoList. * @exports WeAppMemberInfoList * @classdesc Represents a WeAppMemberInfoList. * @implements IWeAppMemberInfoList * @constructor * @param {IWeAppMemberInfoList=} [properties] Properties to set */ function WeAppMemberInfoList(properties) { this.infos = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * WeAppMemberInfoList infos. * @member {Array.} infos * @memberof WeAppMemberInfoList * @instance */ WeAppMemberInfoList.prototype.infos = $util.emptyArray; /** * Creates a new WeAppMemberInfoList instance using the specified properties. * @function create * @memberof WeAppMemberInfoList * @static * @param {IWeAppMemberInfoList=} [properties] Properties to set * @returns {WeAppMemberInfoList} WeAppMemberInfoList instance */ WeAppMemberInfoList.create = function create(properties) { return new WeAppMemberInfoList(properties); }; /** * Encodes the specified WeAppMemberInfoList message. Does not implicitly {@link WeAppMemberInfoList.verify|verify} messages. * @function encode * @memberof WeAppMemberInfoList * @static * @param {IWeAppMemberInfoList} message WeAppMemberInfoList message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ WeAppMemberInfoList.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.infos != null && message.infos.length) for (var i = 0; i < message.infos.length; ++i) $root.WeAppMemberInfo.encode(message.infos[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** * Encodes the specified WeAppMemberInfoList message, length delimited. Does not implicitly {@link WeAppMemberInfoList.verify|verify} messages. * @function encodeDelimited * @memberof WeAppMemberInfoList * @static * @param {IWeAppMemberInfoList} message WeAppMemberInfoList message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ WeAppMemberInfoList.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a WeAppMemberInfoList message from the specified reader or buffer. * @function decode * @memberof WeAppMemberInfoList * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {WeAppMemberInfoList} WeAppMemberInfoList * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ WeAppMemberInfoList.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.WeAppMemberInfoList(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: if (!(message.infos && message.infos.length)) message.infos = []; message.infos.push($root.WeAppMemberInfo.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a WeAppMemberInfoList message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof WeAppMemberInfoList * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {WeAppMemberInfoList} WeAppMemberInfoList * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ WeAppMemberInfoList.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a WeAppMemberInfoList message. * @function verify * @memberof WeAppMemberInfoList * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ WeAppMemberInfoList.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.infos != null && message.hasOwnProperty("infos")) { if (!Array.isArray(message.infos)) return "infos: array expected"; for (var i = 0; i < message.infos.length; ++i) { var error = $root.WeAppMemberInfo.verify(message.infos[i]); if (error) return "infos." + error; } } return null; }; /** * Creates a WeAppMemberInfoList message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof WeAppMemberInfoList * @static * @param {Object.} object Plain object * @returns {WeAppMemberInfoList} WeAppMemberInfoList */ WeAppMemberInfoList.fromObject = function fromObject(object) { if (object instanceof $root.WeAppMemberInfoList) return object; var message = new $root.WeAppMemberInfoList(); if (object.infos) { if (!Array.isArray(object.infos)) throw TypeError(".WeAppMemberInfoList.infos: array expected"); message.infos = []; for (var i = 0; i < object.infos.length; ++i) { if (typeof object.infos[i] !== "object") throw TypeError(".WeAppMemberInfoList.infos: object expected"); message.infos[i] = $root.WeAppMemberInfo.fromObject(object.infos[i]); } } return message; }; /** * Creates a plain object from a WeAppMemberInfoList message. Also converts values to other types if specified. * @function toObject * @memberof WeAppMemberInfoList * @static * @param {WeAppMemberInfoList} message WeAppMemberInfoList * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ WeAppMemberInfoList.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.arrays || options.defaults) object.infos = []; if (message.infos && message.infos.length) { object.infos = []; for (var j = 0; j < message.infos.length; ++j) object.infos[j] = $root.WeAppMemberInfo.toObject(message.infos[j], options); } return object; }; /** * Converts this WeAppMemberInfoList to JSON. * @function toJSON * @memberof WeAppMemberInfoList * @instance * @returns {Object.} JSON object */ WeAppMemberInfoList.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return WeAppMemberInfoList; })(); module.exports = $root; ================================================ FILE: cloudfunctions/ARDemo/cloud-functions-tools/test/svrkit-utils/example/proto/demo.proto ================================================ message ApiDemoReq { optional string str = 2; } message ApiDemoResp { optional string str = 2; } ================================================ FILE: cloudfunctions/ARDemo/cloud-functions-tools/test/svrkit-utils/example/proto/mmbizsafecenter.proto ================================================ message GetWeAppMemberByUserReq { optional uint32 useruin = 1; optional uint32 type = 2; //1:管理员 2:运营者 3:开发人员 4:体验者 optional uint32 status = 3; //SAFECENTER_WEAPP_STATUS_XXX } message WeAppMemberInfo { optional uint32 type = 1; optional uint32 weappuin = 2; optional uint32 useruin = 3; optional uint32 status = 4; optional uint32 createtime = 5; optional uint32 updatetime = 6; optional string ticket = 7; } message WeAppMemberInfoList { repeated WeAppMemberInfo infos = 1; } ================================================ FILE: cloudfunctions/ARDemo/cloud-functions-tools/test/svrkit-utils/example/proto/mmbizwxatmpcode.proto ================================================ message GenWxaCloudTmpCodeReq { optional uint32 CloudPlatform = 1; optional uint32 AppUin = 2; optional uint32 UserUin = 3; } message GenWxaCloudTmpCodeResp { optional string TmpCode = 1; } ================================================ FILE: cloudfunctions/ARDemo/cloud-functions-tools/test/svrkit-utils/example/proto-utils.js ================================================ const config = require('./svrkit.config.js') const proto = require('./bundle.js') function generate(options) { if (!options) { throw new Error('options must be provided') } const { serviceName, funcName, data } = options const serviceConfig = config.find(c => c.serviceName === serviceName) if (!serviceConfig) { throw new Error('service not found') } if (!serviceConfig.functions[funcName]) { throw new Error('function not found') } const reqProto = proto[serviceConfig.functions[funcName].req] const resProto = proto[serviceConfig.functions[funcName].res] return { data: { serviceName, funcName, magic: serviceConfig.magic, cmdid: serviceConfig.functions[funcName].cmdid, existResp: serviceConfig.functions[funcName].existResp, reqBodyBuffer: reqProto.encode(data), }, decode: buf => resProto.decode(resProto) } } module.exports = { generate, } ================================================ FILE: cloudfunctions/ARDemo/cloud-functions-tools/test/svrkit-utils/example/svrkit-utils.js ================================================ const config = require('./svrkit.config.js') const proto = require('./svrkit-utils.static.js') const protoJSON = require('./svrkit-utils.static.json') function generate(options) { if (!options) { throw new Error('options must be provided') } const { serviceName, funcName, data } = options const serviceConfig = config.find(c => c.serviceName === serviceName) if (!serviceConfig) { throw new Error('service not found') } if (!serviceConfig.functions[funcName]) { throw new Error('function not found') } const reqProtoName = serviceConfig.functions[funcName].req const reqProto = proto[reqProtoName] if (!reqProto) { throw new Error('request proto not found') } const resProtoName = serviceConfig.functions[funcName].res const resProto = resProtoName && proto[resProtoName] const reqProtoVerifyErr = reqProto.verify(data) if (reqProtoVerifyErr) { throw new Error(`verify proto data error: ${reqProtoVerifyErr}`) } const reqProtoJSON = protoJSON.nested[reqProtoName] if (reqProtoJSON && reqProtoJSON.fields) { if (Object.prototype.toString.call(data).slice(8, -1) === 'Object') { for (const key in data) { if (!reqProtoJSON.fields[key]) { throw new Error(`'${key}' doesn't exist in '${reqProtoName}' proto, valid keys are ${Object.keys(reqProtoJSON.fields)}`) } } } else { throw new Error('data must be object') } } return { data: { serviceName, funcName, magic: serviceConfig.magic, cmdid: serviceConfig.functions[funcName].cmdid, existResp: Boolean(resProto), reqBodyBuffer: reqProto.encode(data).finish(), }, reqProto, resProto, decode: buf => resProto && resProto.decode(buf) } } function generateV2(options) { if (!options) { throw new Error('options must be provided') } const { apiName, data } = options const apiConfig = config.find(c => c.apiName === apiName) const reqProtoName = apiConfig.req const reqProto = proto[reqProtoName] if (!reqProto) { throw new Error('request proto not found') } const resProtoName = apiConfig.res const resProto = proto[resProtoName] const reqProtoVerifyErr = reqProto.verify(data) if (reqProtoVerifyErr) { throw new Error(`verify proto data error: ${reqProtoVerifyErr}`) } const reqProtoJSON = protoJSON.nested[reqProtoName] if (reqProtoJSON && reqProtoJSON.fields) { if (Object.prototype.toString.call(data).slice(8, -1) === 'Object') { for (const key in data) { if (!reqProtoJSON.fields[key]) { throw new Error(`'${key}' doesn't exist in '${reqProtoName}' proto, valid keys are ${Object.keys(reqProtoJSON.fields)}`) } } } else { throw new Error('data must be object') } } return { data: { apiName, reqBodyBuffer: reqProto.encode(data).finish(), }, reqProto, resProto, decode: buf => resProto && resProto.decode(buf) } } module.exports = { generate, generateV2, } ================================================ FILE: cloudfunctions/ARDemo/cloud-functions-tools/test/svrkit-utils/example/svrkit-utils.static.js ================================================ // #lizard forgives /*eslint-disable*/ "use strict"; var $protobuf = require("protobufjs/minimal"); // Common aliases var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util; // Exported root namespace var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {}); $root.ApiDemoReq = (function() { /** * Properties of an ApiDemoReq. * @exports IApiDemoReq * @interface IApiDemoReq * @property {string|null} [str] ApiDemoReq str */ /** * Constructs a new ApiDemoReq. * @exports ApiDemoReq * @classdesc Represents an ApiDemoReq. * @implements IApiDemoReq * @constructor * @param {IApiDemoReq=} [properties] Properties to set */ function ApiDemoReq(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * ApiDemoReq str. * @member {string} str * @memberof ApiDemoReq * @instance */ ApiDemoReq.prototype.str = ""; /** * Creates a new ApiDemoReq instance using the specified properties. * @function create * @memberof ApiDemoReq * @static * @param {IApiDemoReq=} [properties] Properties to set * @returns {ApiDemoReq} ApiDemoReq instance */ ApiDemoReq.create = function create(properties) { return new ApiDemoReq(properties); }; /** * Encodes the specified ApiDemoReq message. Does not implicitly {@link ApiDemoReq.verify|verify} messages. * @function encode * @memberof ApiDemoReq * @static * @param {IApiDemoReq} message ApiDemoReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ApiDemoReq.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.str != null && message.hasOwnProperty("str")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.str); return writer; }; /** * Encodes the specified ApiDemoReq message, length delimited. Does not implicitly {@link ApiDemoReq.verify|verify} messages. * @function encodeDelimited * @memberof ApiDemoReq * @static * @param {IApiDemoReq} message ApiDemoReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ApiDemoReq.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes an ApiDemoReq message from the specified reader or buffer. * @function decode * @memberof ApiDemoReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {ApiDemoReq} ApiDemoReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ApiDemoReq.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ApiDemoReq(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 2: message.str = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes an ApiDemoReq message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof ApiDemoReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {ApiDemoReq} ApiDemoReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ApiDemoReq.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies an ApiDemoReq message. * @function verify * @memberof ApiDemoReq * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ ApiDemoReq.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.str != null && message.hasOwnProperty("str")) if (!$util.isString(message.str)) return "str: string expected"; return null; }; /** * Creates an ApiDemoReq message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof ApiDemoReq * @static * @param {Object.} object Plain object * @returns {ApiDemoReq} ApiDemoReq */ ApiDemoReq.fromObject = function fromObject(object) { if (object instanceof $root.ApiDemoReq) return object; var message = new $root.ApiDemoReq(); if (object.str != null) message.str = String(object.str); return message; }; /** * Creates a plain object from an ApiDemoReq message. Also converts values to other types if specified. * @function toObject * @memberof ApiDemoReq * @static * @param {ApiDemoReq} message ApiDemoReq * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ ApiDemoReq.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) object.str = ""; if (message.str != null && message.hasOwnProperty("str")) object.str = message.str; return object; }; /** * Converts this ApiDemoReq to JSON. * @function toJSON * @memberof ApiDemoReq * @instance * @returns {Object.} JSON object */ ApiDemoReq.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return ApiDemoReq; })(); $root.ApiDemoResp = (function() { /** * Properties of an ApiDemoResp. * @exports IApiDemoResp * @interface IApiDemoResp * @property {string|null} [str] ApiDemoResp str */ /** * Constructs a new ApiDemoResp. * @exports ApiDemoResp * @classdesc Represents an ApiDemoResp. * @implements IApiDemoResp * @constructor * @param {IApiDemoResp=} [properties] Properties to set */ function ApiDemoResp(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * ApiDemoResp str. * @member {string} str * @memberof ApiDemoResp * @instance */ ApiDemoResp.prototype.str = ""; /** * Creates a new ApiDemoResp instance using the specified properties. * @function create * @memberof ApiDemoResp * @static * @param {IApiDemoResp=} [properties] Properties to set * @returns {ApiDemoResp} ApiDemoResp instance */ ApiDemoResp.create = function create(properties) { return new ApiDemoResp(properties); }; /** * Encodes the specified ApiDemoResp message. Does not implicitly {@link ApiDemoResp.verify|verify} messages. * @function encode * @memberof ApiDemoResp * @static * @param {IApiDemoResp} message ApiDemoResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ApiDemoResp.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.str != null && message.hasOwnProperty("str")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.str); return writer; }; /** * Encodes the specified ApiDemoResp message, length delimited. Does not implicitly {@link ApiDemoResp.verify|verify} messages. * @function encodeDelimited * @memberof ApiDemoResp * @static * @param {IApiDemoResp} message ApiDemoResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ApiDemoResp.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes an ApiDemoResp message from the specified reader or buffer. * @function decode * @memberof ApiDemoResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {ApiDemoResp} ApiDemoResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ApiDemoResp.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ApiDemoResp(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 2: message.str = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes an ApiDemoResp message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof ApiDemoResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {ApiDemoResp} ApiDemoResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ApiDemoResp.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies an ApiDemoResp message. * @function verify * @memberof ApiDemoResp * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ ApiDemoResp.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.str != null && message.hasOwnProperty("str")) if (!$util.isString(message.str)) return "str: string expected"; return null; }; /** * Creates an ApiDemoResp message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof ApiDemoResp * @static * @param {Object.} object Plain object * @returns {ApiDemoResp} ApiDemoResp */ ApiDemoResp.fromObject = function fromObject(object) { if (object instanceof $root.ApiDemoResp) return object; var message = new $root.ApiDemoResp(); if (object.str != null) message.str = String(object.str); return message; }; /** * Creates a plain object from an ApiDemoResp message. Also converts values to other types if specified. * @function toObject * @memberof ApiDemoResp * @static * @param {ApiDemoResp} message ApiDemoResp * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ ApiDemoResp.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) object.str = ""; if (message.str != null && message.hasOwnProperty("str")) object.str = message.str; return object; }; /** * Converts this ApiDemoResp to JSON. * @function toJSON * @memberof ApiDemoResp * @instance * @returns {Object.} JSON object */ ApiDemoResp.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return ApiDemoResp; })(); $root.GenWxaCloudTmpCodeReq = (function() { /** * Properties of a GenWxaCloudTmpCodeReq. * @exports IGenWxaCloudTmpCodeReq * @interface IGenWxaCloudTmpCodeReq * @property {number|null} [CloudPlatform] GenWxaCloudTmpCodeReq CloudPlatform * @property {number|null} [AppUin] GenWxaCloudTmpCodeReq AppUin * @property {number|null} [UserUin] GenWxaCloudTmpCodeReq UserUin */ /** * Constructs a new GenWxaCloudTmpCodeReq. * @exports GenWxaCloudTmpCodeReq * @classdesc Represents a GenWxaCloudTmpCodeReq. * @implements IGenWxaCloudTmpCodeReq * @constructor * @param {IGenWxaCloudTmpCodeReq=} [properties] Properties to set */ function GenWxaCloudTmpCodeReq(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * GenWxaCloudTmpCodeReq CloudPlatform. * @member {number} CloudPlatform * @memberof GenWxaCloudTmpCodeReq * @instance */ GenWxaCloudTmpCodeReq.prototype.CloudPlatform = 0; /** * GenWxaCloudTmpCodeReq AppUin. * @member {number} AppUin * @memberof GenWxaCloudTmpCodeReq * @instance */ GenWxaCloudTmpCodeReq.prototype.AppUin = 0; /** * GenWxaCloudTmpCodeReq UserUin. * @member {number} UserUin * @memberof GenWxaCloudTmpCodeReq * @instance */ GenWxaCloudTmpCodeReq.prototype.UserUin = 0; /** * Creates a new GenWxaCloudTmpCodeReq instance using the specified properties. * @function create * @memberof GenWxaCloudTmpCodeReq * @static * @param {IGenWxaCloudTmpCodeReq=} [properties] Properties to set * @returns {GenWxaCloudTmpCodeReq} GenWxaCloudTmpCodeReq instance */ GenWxaCloudTmpCodeReq.create = function create(properties) { return new GenWxaCloudTmpCodeReq(properties); }; /** * Encodes the specified GenWxaCloudTmpCodeReq message. Does not implicitly {@link GenWxaCloudTmpCodeReq.verify|verify} messages. * @function encode * @memberof GenWxaCloudTmpCodeReq * @static * @param {IGenWxaCloudTmpCodeReq} message GenWxaCloudTmpCodeReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GenWxaCloudTmpCodeReq.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.CloudPlatform != null && message.hasOwnProperty("CloudPlatform")) writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.CloudPlatform); if (message.AppUin != null && message.hasOwnProperty("AppUin")) writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.AppUin); if (message.UserUin != null && message.hasOwnProperty("UserUin")) writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.UserUin); return writer; }; /** * Encodes the specified GenWxaCloudTmpCodeReq message, length delimited. Does not implicitly {@link GenWxaCloudTmpCodeReq.verify|verify} messages. * @function encodeDelimited * @memberof GenWxaCloudTmpCodeReq * @static * @param {IGenWxaCloudTmpCodeReq} message GenWxaCloudTmpCodeReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GenWxaCloudTmpCodeReq.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a GenWxaCloudTmpCodeReq message from the specified reader or buffer. * @function decode * @memberof GenWxaCloudTmpCodeReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {GenWxaCloudTmpCodeReq} GenWxaCloudTmpCodeReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GenWxaCloudTmpCodeReq.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.GenWxaCloudTmpCodeReq(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.CloudPlatform = reader.uint32(); break; case 2: message.AppUin = reader.uint32(); break; case 3: message.UserUin = reader.uint32(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a GenWxaCloudTmpCodeReq message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof GenWxaCloudTmpCodeReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {GenWxaCloudTmpCodeReq} GenWxaCloudTmpCodeReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GenWxaCloudTmpCodeReq.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a GenWxaCloudTmpCodeReq message. * @function verify * @memberof GenWxaCloudTmpCodeReq * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ GenWxaCloudTmpCodeReq.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.CloudPlatform != null && message.hasOwnProperty("CloudPlatform")) if (!$util.isInteger(message.CloudPlatform)) return "CloudPlatform: integer expected"; if (message.AppUin != null && message.hasOwnProperty("AppUin")) if (!$util.isInteger(message.AppUin)) return "AppUin: integer expected"; if (message.UserUin != null && message.hasOwnProperty("UserUin")) if (!$util.isInteger(message.UserUin)) return "UserUin: integer expected"; return null; }; /** * Creates a GenWxaCloudTmpCodeReq message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof GenWxaCloudTmpCodeReq * @static * @param {Object.} object Plain object * @returns {GenWxaCloudTmpCodeReq} GenWxaCloudTmpCodeReq */ GenWxaCloudTmpCodeReq.fromObject = function fromObject(object) { if (object instanceof $root.GenWxaCloudTmpCodeReq) return object; var message = new $root.GenWxaCloudTmpCodeReq(); if (object.CloudPlatform != null) message.CloudPlatform = object.CloudPlatform >>> 0; if (object.AppUin != null) message.AppUin = object.AppUin >>> 0; if (object.UserUin != null) message.UserUin = object.UserUin >>> 0; return message; }; /** * Creates a plain object from a GenWxaCloudTmpCodeReq message. Also converts values to other types if specified. * @function toObject * @memberof GenWxaCloudTmpCodeReq * @static * @param {GenWxaCloudTmpCodeReq} message GenWxaCloudTmpCodeReq * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ GenWxaCloudTmpCodeReq.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.CloudPlatform = 0; object.AppUin = 0; object.UserUin = 0; } if (message.CloudPlatform != null && message.hasOwnProperty("CloudPlatform")) object.CloudPlatform = message.CloudPlatform; if (message.AppUin != null && message.hasOwnProperty("AppUin")) object.AppUin = message.AppUin; if (message.UserUin != null && message.hasOwnProperty("UserUin")) object.UserUin = message.UserUin; return object; }; /** * Converts this GenWxaCloudTmpCodeReq to JSON. * @function toJSON * @memberof GenWxaCloudTmpCodeReq * @instance * @returns {Object.} JSON object */ GenWxaCloudTmpCodeReq.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return GenWxaCloudTmpCodeReq; })(); $root.GenWxaCloudTmpCodeResp = (function() { /** * Properties of a GenWxaCloudTmpCodeResp. * @exports IGenWxaCloudTmpCodeResp * @interface IGenWxaCloudTmpCodeResp * @property {string|null} [TmpCode] GenWxaCloudTmpCodeResp TmpCode */ /** * Constructs a new GenWxaCloudTmpCodeResp. * @exports GenWxaCloudTmpCodeResp * @classdesc Represents a GenWxaCloudTmpCodeResp. * @implements IGenWxaCloudTmpCodeResp * @constructor * @param {IGenWxaCloudTmpCodeResp=} [properties] Properties to set */ function GenWxaCloudTmpCodeResp(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * GenWxaCloudTmpCodeResp TmpCode. * @member {string} TmpCode * @memberof GenWxaCloudTmpCodeResp * @instance */ GenWxaCloudTmpCodeResp.prototype.TmpCode = ""; /** * Creates a new GenWxaCloudTmpCodeResp instance using the specified properties. * @function create * @memberof GenWxaCloudTmpCodeResp * @static * @param {IGenWxaCloudTmpCodeResp=} [properties] Properties to set * @returns {GenWxaCloudTmpCodeResp} GenWxaCloudTmpCodeResp instance */ GenWxaCloudTmpCodeResp.create = function create(properties) { return new GenWxaCloudTmpCodeResp(properties); }; /** * Encodes the specified GenWxaCloudTmpCodeResp message. Does not implicitly {@link GenWxaCloudTmpCodeResp.verify|verify} messages. * @function encode * @memberof GenWxaCloudTmpCodeResp * @static * @param {IGenWxaCloudTmpCodeResp} message GenWxaCloudTmpCodeResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GenWxaCloudTmpCodeResp.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.TmpCode != null && message.hasOwnProperty("TmpCode")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.TmpCode); return writer; }; /** * Encodes the specified GenWxaCloudTmpCodeResp message, length delimited. Does not implicitly {@link GenWxaCloudTmpCodeResp.verify|verify} messages. * @function encodeDelimited * @memberof GenWxaCloudTmpCodeResp * @static * @param {IGenWxaCloudTmpCodeResp} message GenWxaCloudTmpCodeResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GenWxaCloudTmpCodeResp.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a GenWxaCloudTmpCodeResp message from the specified reader or buffer. * @function decode * @memberof GenWxaCloudTmpCodeResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {GenWxaCloudTmpCodeResp} GenWxaCloudTmpCodeResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GenWxaCloudTmpCodeResp.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.GenWxaCloudTmpCodeResp(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.TmpCode = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a GenWxaCloudTmpCodeResp message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof GenWxaCloudTmpCodeResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {GenWxaCloudTmpCodeResp} GenWxaCloudTmpCodeResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GenWxaCloudTmpCodeResp.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a GenWxaCloudTmpCodeResp message. * @function verify * @memberof GenWxaCloudTmpCodeResp * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ GenWxaCloudTmpCodeResp.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.TmpCode != null && message.hasOwnProperty("TmpCode")) if (!$util.isString(message.TmpCode)) return "TmpCode: string expected"; return null; }; /** * Creates a GenWxaCloudTmpCodeResp message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof GenWxaCloudTmpCodeResp * @static * @param {Object.} object Plain object * @returns {GenWxaCloudTmpCodeResp} GenWxaCloudTmpCodeResp */ GenWxaCloudTmpCodeResp.fromObject = function fromObject(object) { if (object instanceof $root.GenWxaCloudTmpCodeResp) return object; var message = new $root.GenWxaCloudTmpCodeResp(); if (object.TmpCode != null) message.TmpCode = String(object.TmpCode); return message; }; /** * Creates a plain object from a GenWxaCloudTmpCodeResp message. Also converts values to other types if specified. * @function toObject * @memberof GenWxaCloudTmpCodeResp * @static * @param {GenWxaCloudTmpCodeResp} message GenWxaCloudTmpCodeResp * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ GenWxaCloudTmpCodeResp.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) object.TmpCode = ""; if (message.TmpCode != null && message.hasOwnProperty("TmpCode")) object.TmpCode = message.TmpCode; return object; }; /** * Converts this GenWxaCloudTmpCodeResp to JSON. * @function toJSON * @memberof GenWxaCloudTmpCodeResp * @instance * @returns {Object.} JSON object */ GenWxaCloudTmpCodeResp.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return GenWxaCloudTmpCodeResp; })(); $root.GetWeAppMemberByUserReq = (function() { /** * Properties of a GetWeAppMemberByUserReq. * @exports IGetWeAppMemberByUserReq * @interface IGetWeAppMemberByUserReq * @property {number|null} [useruin] GetWeAppMemberByUserReq useruin * @property {number|null} [type] GetWeAppMemberByUserReq type * @property {number|null} [status] GetWeAppMemberByUserReq status */ /** * Constructs a new GetWeAppMemberByUserReq. * @exports GetWeAppMemberByUserReq * @classdesc Represents a GetWeAppMemberByUserReq. * @implements IGetWeAppMemberByUserReq * @constructor * @param {IGetWeAppMemberByUserReq=} [properties] Properties to set */ function GetWeAppMemberByUserReq(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * GetWeAppMemberByUserReq useruin. * @member {number} useruin * @memberof GetWeAppMemberByUserReq * @instance */ GetWeAppMemberByUserReq.prototype.useruin = 0; /** * GetWeAppMemberByUserReq type. * @member {number} type * @memberof GetWeAppMemberByUserReq * @instance */ GetWeAppMemberByUserReq.prototype.type = 0; /** * GetWeAppMemberByUserReq status. * @member {number} status * @memberof GetWeAppMemberByUserReq * @instance */ GetWeAppMemberByUserReq.prototype.status = 0; /** * Creates a new GetWeAppMemberByUserReq instance using the specified properties. * @function create * @memberof GetWeAppMemberByUserReq * @static * @param {IGetWeAppMemberByUserReq=} [properties] Properties to set * @returns {GetWeAppMemberByUserReq} GetWeAppMemberByUserReq instance */ GetWeAppMemberByUserReq.create = function create(properties) { return new GetWeAppMemberByUserReq(properties); }; /** * Encodes the specified GetWeAppMemberByUserReq message. Does not implicitly {@link GetWeAppMemberByUserReq.verify|verify} messages. * @function encode * @memberof GetWeAppMemberByUserReq * @static * @param {IGetWeAppMemberByUserReq} message GetWeAppMemberByUserReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GetWeAppMemberByUserReq.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.useruin != null && message.hasOwnProperty("useruin")) writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.useruin); if (message.type != null && message.hasOwnProperty("type")) writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.type); if (message.status != null && message.hasOwnProperty("status")) writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.status); return writer; }; /** * Encodes the specified GetWeAppMemberByUserReq message, length delimited. Does not implicitly {@link GetWeAppMemberByUserReq.verify|verify} messages. * @function encodeDelimited * @memberof GetWeAppMemberByUserReq * @static * @param {IGetWeAppMemberByUserReq} message GetWeAppMemberByUserReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GetWeAppMemberByUserReq.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a GetWeAppMemberByUserReq message from the specified reader or buffer. * @function decode * @memberof GetWeAppMemberByUserReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {GetWeAppMemberByUserReq} GetWeAppMemberByUserReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GetWeAppMemberByUserReq.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.GetWeAppMemberByUserReq(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.useruin = reader.uint32(); break; case 2: message.type = reader.uint32(); break; case 3: message.status = reader.uint32(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a GetWeAppMemberByUserReq message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof GetWeAppMemberByUserReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {GetWeAppMemberByUserReq} GetWeAppMemberByUserReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GetWeAppMemberByUserReq.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a GetWeAppMemberByUserReq message. * @function verify * @memberof GetWeAppMemberByUserReq * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ GetWeAppMemberByUserReq.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.useruin != null && message.hasOwnProperty("useruin")) if (!$util.isInteger(message.useruin)) return "useruin: integer expected"; if (message.type != null && message.hasOwnProperty("type")) if (!$util.isInteger(message.type)) return "type: integer expected"; if (message.status != null && message.hasOwnProperty("status")) if (!$util.isInteger(message.status)) return "status: integer expected"; return null; }; /** * Creates a GetWeAppMemberByUserReq message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof GetWeAppMemberByUserReq * @static * @param {Object.} object Plain object * @returns {GetWeAppMemberByUserReq} GetWeAppMemberByUserReq */ GetWeAppMemberByUserReq.fromObject = function fromObject(object) { if (object instanceof $root.GetWeAppMemberByUserReq) return object; var message = new $root.GetWeAppMemberByUserReq(); if (object.useruin != null) message.useruin = object.useruin >>> 0; if (object.type != null) message.type = object.type >>> 0; if (object.status != null) message.status = object.status >>> 0; return message; }; /** * Creates a plain object from a GetWeAppMemberByUserReq message. Also converts values to other types if specified. * @function toObject * @memberof GetWeAppMemberByUserReq * @static * @param {GetWeAppMemberByUserReq} message GetWeAppMemberByUserReq * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ GetWeAppMemberByUserReq.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.useruin = 0; object.type = 0; object.status = 0; } if (message.useruin != null && message.hasOwnProperty("useruin")) object.useruin = message.useruin; if (message.type != null && message.hasOwnProperty("type")) object.type = message.type; if (message.status != null && message.hasOwnProperty("status")) object.status = message.status; return object; }; /** * Converts this GetWeAppMemberByUserReq to JSON. * @function toJSON * @memberof GetWeAppMemberByUserReq * @instance * @returns {Object.} JSON object */ GetWeAppMemberByUserReq.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return GetWeAppMemberByUserReq; })(); $root.WeAppMemberInfo = (function() { /** * Properties of a WeAppMemberInfo. * @exports IWeAppMemberInfo * @interface IWeAppMemberInfo * @property {number|null} [type] WeAppMemberInfo type * @property {number|null} [weappuin] WeAppMemberInfo weappuin * @property {number|null} [useruin] WeAppMemberInfo useruin * @property {number|null} [status] WeAppMemberInfo status * @property {number|null} [createtime] WeAppMemberInfo createtime * @property {number|null} [updatetime] WeAppMemberInfo updatetime * @property {string|null} [ticket] WeAppMemberInfo ticket */ /** * Constructs a new WeAppMemberInfo. * @exports WeAppMemberInfo * @classdesc Represents a WeAppMemberInfo. * @implements IWeAppMemberInfo * @constructor * @param {IWeAppMemberInfo=} [properties] Properties to set */ function WeAppMemberInfo(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * WeAppMemberInfo type. * @member {number} type * @memberof WeAppMemberInfo * @instance */ WeAppMemberInfo.prototype.type = 0; /** * WeAppMemberInfo weappuin. * @member {number} weappuin * @memberof WeAppMemberInfo * @instance */ WeAppMemberInfo.prototype.weappuin = 0; /** * WeAppMemberInfo useruin. * @member {number} useruin * @memberof WeAppMemberInfo * @instance */ WeAppMemberInfo.prototype.useruin = 0; /** * WeAppMemberInfo status. * @member {number} status * @memberof WeAppMemberInfo * @instance */ WeAppMemberInfo.prototype.status = 0; /** * WeAppMemberInfo createtime. * @member {number} createtime * @memberof WeAppMemberInfo * @instance */ WeAppMemberInfo.prototype.createtime = 0; /** * WeAppMemberInfo updatetime. * @member {number} updatetime * @memberof WeAppMemberInfo * @instance */ WeAppMemberInfo.prototype.updatetime = 0; /** * WeAppMemberInfo ticket. * @member {string} ticket * @memberof WeAppMemberInfo * @instance */ WeAppMemberInfo.prototype.ticket = ""; /** * Creates a new WeAppMemberInfo instance using the specified properties. * @function create * @memberof WeAppMemberInfo * @static * @param {IWeAppMemberInfo=} [properties] Properties to set * @returns {WeAppMemberInfo} WeAppMemberInfo instance */ WeAppMemberInfo.create = function create(properties) { return new WeAppMemberInfo(properties); }; /** * Encodes the specified WeAppMemberInfo message. Does not implicitly {@link WeAppMemberInfo.verify|verify} messages. * @function encode * @memberof WeAppMemberInfo * @static * @param {IWeAppMemberInfo} message WeAppMemberInfo message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ WeAppMemberInfo.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.type != null && message.hasOwnProperty("type")) writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.type); if (message.weappuin != null && message.hasOwnProperty("weappuin")) writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.weappuin); if (message.useruin != null && message.hasOwnProperty("useruin")) writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.useruin); if (message.status != null && message.hasOwnProperty("status")) writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.status); if (message.createtime != null && message.hasOwnProperty("createtime")) writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.createtime); if (message.updatetime != null && message.hasOwnProperty("updatetime")) writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.updatetime); if (message.ticket != null && message.hasOwnProperty("ticket")) writer.uint32(/* id 7, wireType 2 =*/58).string(message.ticket); return writer; }; /** * Encodes the specified WeAppMemberInfo message, length delimited. Does not implicitly {@link WeAppMemberInfo.verify|verify} messages. * @function encodeDelimited * @memberof WeAppMemberInfo * @static * @param {IWeAppMemberInfo} message WeAppMemberInfo message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ WeAppMemberInfo.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a WeAppMemberInfo message from the specified reader or buffer. * @function decode * @memberof WeAppMemberInfo * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {WeAppMemberInfo} WeAppMemberInfo * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ WeAppMemberInfo.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.WeAppMemberInfo(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.type = reader.uint32(); break; case 2: message.weappuin = reader.uint32(); break; case 3: message.useruin = reader.uint32(); break; case 4: message.status = reader.uint32(); break; case 5: message.createtime = reader.uint32(); break; case 6: message.updatetime = reader.uint32(); break; case 7: message.ticket = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a WeAppMemberInfo message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof WeAppMemberInfo * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {WeAppMemberInfo} WeAppMemberInfo * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ WeAppMemberInfo.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a WeAppMemberInfo message. * @function verify * @memberof WeAppMemberInfo * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ WeAppMemberInfo.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.type != null && message.hasOwnProperty("type")) if (!$util.isInteger(message.type)) return "type: integer expected"; if (message.weappuin != null && message.hasOwnProperty("weappuin")) if (!$util.isInteger(message.weappuin)) return "weappuin: integer expected"; if (message.useruin != null && message.hasOwnProperty("useruin")) if (!$util.isInteger(message.useruin)) return "useruin: integer expected"; if (message.status != null && message.hasOwnProperty("status")) if (!$util.isInteger(message.status)) return "status: integer expected"; if (message.createtime != null && message.hasOwnProperty("createtime")) if (!$util.isInteger(message.createtime)) return "createtime: integer expected"; if (message.updatetime != null && message.hasOwnProperty("updatetime")) if (!$util.isInteger(message.updatetime)) return "updatetime: integer expected"; if (message.ticket != null && message.hasOwnProperty("ticket")) if (!$util.isString(message.ticket)) return "ticket: string expected"; return null; }; /** * Creates a WeAppMemberInfo message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof WeAppMemberInfo * @static * @param {Object.} object Plain object * @returns {WeAppMemberInfo} WeAppMemberInfo */ WeAppMemberInfo.fromObject = function fromObject(object) { if (object instanceof $root.WeAppMemberInfo) return object; var message = new $root.WeAppMemberInfo(); if (object.type != null) message.type = object.type >>> 0; if (object.weappuin != null) message.weappuin = object.weappuin >>> 0; if (object.useruin != null) message.useruin = object.useruin >>> 0; if (object.status != null) message.status = object.status >>> 0; if (object.createtime != null) message.createtime = object.createtime >>> 0; if (object.updatetime != null) message.updatetime = object.updatetime >>> 0; if (object.ticket != null) message.ticket = String(object.ticket); return message; }; /** * Creates a plain object from a WeAppMemberInfo message. Also converts values to other types if specified. * @function toObject * @memberof WeAppMemberInfo * @static * @param {WeAppMemberInfo} message WeAppMemberInfo * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ WeAppMemberInfo.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.type = 0; object.weappuin = 0; object.useruin = 0; object.status = 0; object.createtime = 0; object.updatetime = 0; object.ticket = ""; } if (message.type != null && message.hasOwnProperty("type")) object.type = message.type; if (message.weappuin != null && message.hasOwnProperty("weappuin")) object.weappuin = message.weappuin; if (message.useruin != null && message.hasOwnProperty("useruin")) object.useruin = message.useruin; if (message.status != null && message.hasOwnProperty("status")) object.status = message.status; if (message.createtime != null && message.hasOwnProperty("createtime")) object.createtime = message.createtime; if (message.updatetime != null && message.hasOwnProperty("updatetime")) object.updatetime = message.updatetime; if (message.ticket != null && message.hasOwnProperty("ticket")) object.ticket = message.ticket; return object; }; /** * Converts this WeAppMemberInfo to JSON. * @function toJSON * @memberof WeAppMemberInfo * @instance * @returns {Object.} JSON object */ WeAppMemberInfo.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return WeAppMemberInfo; })(); $root.WeAppMemberInfoList = (function() { /** * Properties of a WeAppMemberInfoList. * @exports IWeAppMemberInfoList * @interface IWeAppMemberInfoList * @property {Array.|null} [infos] WeAppMemberInfoList infos */ /** * Constructs a new WeAppMemberInfoList. * @exports WeAppMemberInfoList * @classdesc Represents a WeAppMemberInfoList. * @implements IWeAppMemberInfoList * @constructor * @param {IWeAppMemberInfoList=} [properties] Properties to set */ function WeAppMemberInfoList(properties) { this.infos = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * WeAppMemberInfoList infos. * @member {Array.} infos * @memberof WeAppMemberInfoList * @instance */ WeAppMemberInfoList.prototype.infos = $util.emptyArray; /** * Creates a new WeAppMemberInfoList instance using the specified properties. * @function create * @memberof WeAppMemberInfoList * @static * @param {IWeAppMemberInfoList=} [properties] Properties to set * @returns {WeAppMemberInfoList} WeAppMemberInfoList instance */ WeAppMemberInfoList.create = function create(properties) { return new WeAppMemberInfoList(properties); }; /** * Encodes the specified WeAppMemberInfoList message. Does not implicitly {@link WeAppMemberInfoList.verify|verify} messages. * @function encode * @memberof WeAppMemberInfoList * @static * @param {IWeAppMemberInfoList} message WeAppMemberInfoList message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ WeAppMemberInfoList.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.infos != null && message.infos.length) for (var i = 0; i < message.infos.length; ++i) $root.WeAppMemberInfo.encode(message.infos[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** * Encodes the specified WeAppMemberInfoList message, length delimited. Does not implicitly {@link WeAppMemberInfoList.verify|verify} messages. * @function encodeDelimited * @memberof WeAppMemberInfoList * @static * @param {IWeAppMemberInfoList} message WeAppMemberInfoList message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ WeAppMemberInfoList.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a WeAppMemberInfoList message from the specified reader or buffer. * @function decode * @memberof WeAppMemberInfoList * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {WeAppMemberInfoList} WeAppMemberInfoList * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ WeAppMemberInfoList.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.WeAppMemberInfoList(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: if (!(message.infos && message.infos.length)) message.infos = []; message.infos.push($root.WeAppMemberInfo.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a WeAppMemberInfoList message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof WeAppMemberInfoList * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {WeAppMemberInfoList} WeAppMemberInfoList * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ WeAppMemberInfoList.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a WeAppMemberInfoList message. * @function verify * @memberof WeAppMemberInfoList * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ WeAppMemberInfoList.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.infos != null && message.hasOwnProperty("infos")) { if (!Array.isArray(message.infos)) return "infos: array expected"; for (var i = 0; i < message.infos.length; ++i) { var error = $root.WeAppMemberInfo.verify(message.infos[i]); if (error) return "infos." + error; } } return null; }; /** * Creates a WeAppMemberInfoList message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof WeAppMemberInfoList * @static * @param {Object.} object Plain object * @returns {WeAppMemberInfoList} WeAppMemberInfoList */ WeAppMemberInfoList.fromObject = function fromObject(object) { if (object instanceof $root.WeAppMemberInfoList) return object; var message = new $root.WeAppMemberInfoList(); if (object.infos) { if (!Array.isArray(object.infos)) throw TypeError(".WeAppMemberInfoList.infos: array expected"); message.infos = []; for (var i = 0; i < object.infos.length; ++i) { if (typeof object.infos[i] !== "object") throw TypeError(".WeAppMemberInfoList.infos: object expected"); message.infos[i] = $root.WeAppMemberInfo.fromObject(object.infos[i]); } } return message; }; /** * Creates a plain object from a WeAppMemberInfoList message. Also converts values to other types if specified. * @function toObject * @memberof WeAppMemberInfoList * @static * @param {WeAppMemberInfoList} message WeAppMemberInfoList * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ WeAppMemberInfoList.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.arrays || options.defaults) object.infos = []; if (message.infos && message.infos.length) { object.infos = []; for (var j = 0; j < message.infos.length; ++j) object.infos[j] = $root.WeAppMemberInfo.toObject(message.infos[j], options); } return object; }; /** * Converts this WeAppMemberInfoList to JSON. * @function toJSON * @memberof WeAppMemberInfoList * @instance * @returns {Object.} JSON object */ WeAppMemberInfoList.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return WeAppMemberInfoList; })(); module.exports = $root; ================================================ FILE: cloudfunctions/ARDemo/cloud-functions-tools/test/svrkit-utils/example/svrkit-utils.static.json ================================================ { "nested": { "ApiDemoReq": { "fields": { "str": { "type": "string", "id": 2 } } }, "ApiDemoResp": { "fields": { "str": { "type": "string", "id": 2 } } }, "GenWxaCloudTmpCodeReq": { "fields": { "CloudPlatform": { "type": "uint32", "id": 1 }, "AppUin": { "type": "uint32", "id": 2 }, "UserUin": { "type": "uint32", "id": 3 } } }, "GenWxaCloudTmpCodeResp": { "fields": { "TmpCode": { "type": "string", "id": 1 } } }, "GetWeAppMemberByUserReq": { "fields": { "useruin": { "type": "uint32", "id": 1 }, "type": { "type": "uint32", "id": 2 }, "status": { "type": "uint32", "id": 3 } } }, "WeAppMemberInfo": { "fields": { "type": { "type": "uint32", "id": 1 }, "weappuin": { "type": "uint32", "id": 2 }, "useruin": { "type": "uint32", "id": 3 }, "status": { "type": "uint32", "id": 4 }, "createtime": { "type": "uint32", "id": 5 }, "updatetime": { "type": "uint32", "id": 6 }, "ticket": { "type": "string", "id": 7 } } }, "WeAppMemberInfoList": { "fields": { "infos": { "rule": "repeated", "type": "WeAppMemberInfo", "id": 1 } } } } } ================================================ FILE: cloudfunctions/ARDemo/cloud-functions-tools/test/svrkit-utils/example/svrkit.config.js ================================================ module.exports = [ { proto: './proto/demo.proto', apiName: 'demo', req: 'ApiDemoReq', res: 'ApiDemoResp' }, { proto: './proto/mmbizwxatmpcode.proto', serviceName: 'MMBizWxaCloud', magic: 13299, functions: { GenWxaCloudTmpCode: { cmdid: 3, req: 'GenWxaCloudTmpCodeReq', res: 'GenWxaCloudTmpCodeResp', }, } }, { proto: './proto/mmbizsafecenter.proto', serviceName: 'mmbizsafecenter', magic: 12085, functions: { GetWeAppMemberByUser: { cmdid: 73, req: 'GetWeAppMemberByUserReq', res: 'WeAppMemberInfoList', }, } }, ] ================================================ FILE: cloudfunctions/ARDemo/config.json ================================================ { "permissions": { "openapi": [ ] } } ================================================ FILE: cloudfunctions/ARDemo/index.js ================================================ // 云函数入口文件 const cloud = require('wx-server-sdk') const wxgService = require('./wx-server-sdk-wxg-service') const svrkitUtils = require('./svrkit-utils.js') cloud.registerService(wxgService) cloud.init() // 云函数入口函数 exports.main = async (event, context) => { const wxContext = cloud.getWXContext() const bizuin = wxContext.APPUIN switch (event.type) { case 'GenerateARModel': return await cloud.callWXSvrkit({ pbInstance: svrkitUtils.generate({ serviceName: 'Mmbizwxaintpar', funcName: 'GenerateARModel', data: { bizuin, name: event.name, url: event.url, algoType: event.algoType, getmesh: event.getMesh, gettexture: event.getTexture }, }), timeout: 30000, }) case 'GetARModel': return await cloud.callWXSvrkit({ pbInstance: svrkitUtils.generate({ serviceName: 'Mmbizwxaintpar', funcName: 'GetARModel', data: { bizuin, cosid: event.cosid, modelType: event.modelType, needData: event.needData, useIntranet: event.useIntranet, expireTime: event.expireTime }, }), timeout: 30000, }) // GetARModelList 废弃,完全依赖本地缓存 // case "GetARModelList": // return await cloud.callWXSvrkit({ // pbInstance: svrkitUtils.generate({ // serviceName: "Mmbizwxaintpar", // funcName: "GetARModelList", // data: { // bizuin: bizuin, // modelStatus: event.modelStatus, // algoType: event.algoType // }, // }), // timeout: 30000, // }); } } ================================================ FILE: cloudfunctions/ARDemo/package.json ================================================ { "name": "ARDemo", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "svrkit": "svrkit-utils --config ./svrkit.config.js --output ./svrkit-utils.js" }, "author": "", "license": "ISC", "dependencies": { "wx-server-sdk": "^2.6.3" }, "devDependencies": { "@tencent/cloud-functions-tools": "^1.7.0" } } ================================================ FILE: cloudfunctions/ARDemo/proto/mmbizwxaintparDemo.proto ================================================ enum enARModelStatus { ARModel_Status_Default = 0; ARModel_Status_Init = 1; ARModel_Status_Sparse_Finished = 2; ARModel_Status_3d_Finished = 3; ARModel_Status_Object_Finished = 4; ARModel_Status_Marker_Finished = 5; ARModel_Status_Fail = 100; } enum enARAlgorithmType { Algorithm_Type_3D_Object = 1; Algorithm_Type_3D_Marker = 2; } enum enARModelType { ARModel_Type_Sparse = 1; ARModel_Type_3D = 2; ARModel_Type_Marker = 3; } message ModelCos { message ModelCosId { optional enARModelType model_type = 1; optional string model_cosid = 2; optional string errmsg = 3; } repeated ModelCosId model_list = 1; } message ARModel { //option(mmbizintpkv.KvTableID) = 493; option(mmbizintpkv.KvTableTestID) = 916; optional string cosid = 1; // 原始文件的cosid optional uint32 bizuin = 2; optional string name = 3; // 原始文件的名称 optional uint32 upload_time = 4; optional enARModelStatus model_status = 5; optional enARAlgorithmType algo_type = 6; optional ModelCos model_cos = 7; } message GetARModelListReq { optional uint32 bizuin = 1; optional uint32 model_status = 2; // enARModelStatus optional uint32 start_time = 3; optional uint32 end_time = 4; optional uint32 offset = 5; optional uint32 limit = 6; optional uint32 algo_type = 7; // enARAlgorithmType } message GetARModelListResp { repeated ARModel model_list = 1; } message GenerateARModelReq { optional uint32 bizuin = 1; optional string name = 2; optional bytes buffer = 3; optional string url = 4; optional enARAlgorithmType algo_type = 5; optional uint32 lod = 6[default=0]; // 重建模型精度, 最高精度为0, 取1,2,3时精度依次下降 optional bool getmesh = 7[default=false]; optional bool gettexture = 8[default=false]; } message GenerateARModelResp { optional string url = 1; optional string host = 2; optional string cosid = 3; optional uint32 lod = 4[default=0]; optional bool getmesh = 5[default=false]; optional bool gettexture = 6[default=false]; } message ARModelData { optional bytes mesh_model = 1; // 文本(点面信息) optional bytes texture_model = 2; // 图像png optional bytes preview = 3; optional bytes mesh_blob = 4; // obj二进制, getmesh = true时返回 optional bytes texture_blob = 5; // 纹理二进制, gettexture = true时返回 } message GetARModelReq { optional uint32 bizuin = 1; optional string cosid = 2; optional uint32 model_type = 3; // 1:稀疏点云 2:3d模型 3:Marker模型 optional uint32 need_data = 4[default=1]; // 0:不需要数据 1:需要数据 optional uint32 use_intranet = 5[default=0]; // 当need_data为0时生效 0:生成外网链接 1:内网链接 optional uint32 expire_time = 6; // url过期时间,默认5分钟,单位为秒,最长1800 } message GetARModelResp { optional ARModelData model_data = 1; optional string url = 2; optional string host = 3; optional string errMsg = 4; optional uint32 expire_time = 5; optional uint32 status = 6; // 0 生成中 1 生成成功 2 过期 3 生成失败 } ================================================ FILE: cloudfunctions/ARDemo/svrkit-utils.js ================================================ const config = require('./svrkit.config.js') const proto = require('./svrkit-utils.static.js') const protoJSON = require('./svrkit-utils.static.json') function getProto(proto, serviceName, protoName) { if (proto[protoName]) { return proto[protoName] } if (proto[serviceName] && proto[serviceName][protoName]) { return proto[serviceName][protoName] } /** 处理 mmpayolcirclemodel.QueryActivityReq 的形式 */ const [realServiceName, realProtoName] = protoName.split('.') if (proto[realServiceName]) { return proto[realServiceName][realProtoName] } return undefined } function generate(options) { if (!options) { throw new Error('options must be provided') } const { serviceName, funcName, data } = options const serviceConfig = config.find(c => c.serviceName === serviceName) if (!serviceConfig) { throw new Error('service not found') } if (!serviceConfig.functions[funcName]) { throw new Error('function not found') } const reqProtoName = serviceConfig.functions[funcName].req const reqProto = getProto(proto, serviceName, reqProtoName) if (!reqProto) { throw new Error('request proto not found') } const resProtoName = serviceConfig.functions[funcName].res const resProto = resProtoName && getProto(proto, serviceName, resProtoName) const reqProtoVerifyErr = reqProto.verify(data) if (reqProtoVerifyErr) { throw new Error(`verify proto data error: ${reqProtoVerifyErr}`) } const reqProtoJSON = protoJSON.nested[reqProtoName] if (reqProtoJSON && reqProtoJSON.fields) { if (Object.prototype.toString.call(data).slice(8, -1) === 'Object') { for (const key in data) { if (!reqProtoJSON.fields[key]) { throw new Error(`'${key}' doesn't exist in '${reqProtoName}' proto, valid keys are ${Object.keys(reqProtoJSON.fields)}`) } } } else { throw new Error('data must be object') } } return { data: { serviceName, funcName, magic: serviceConfig.magic, cmdid: serviceConfig.functions[funcName].cmdid, existResp: Boolean(resProto), reqBodyBuffer: reqProto.encode(data).finish(), }, reqProto, resProto, decode: buf => resProto && resProto.decode(buf) } } function generateV2(options) { if (!options) { throw new Error('options must be provided') } const { apiName, data } = options const apiConfig = config.find(c => c.apiName === apiName) const reqProtoName = apiConfig.req const reqProto = proto[reqProtoName] if (!reqProto) { throw new Error('request proto not found') } const resProtoName = apiConfig.res const resProto = proto[resProtoName] const reqProtoVerifyErr = reqProto.verify(data) if (reqProtoVerifyErr) { throw new Error(`verify proto data error: ${reqProtoVerifyErr}`) } const reqProtoJSON = protoJSON.nested[reqProtoName] if (reqProtoJSON && reqProtoJSON.fields) { if (Object.prototype.toString.call(data).slice(8, -1) === 'Object') { for (const key in data) { if (!reqProtoJSON.fields[key]) { throw new Error(`'${key}' doesn't exist in '${reqProtoName}' proto, valid keys are ${Object.keys(reqProtoJSON.fields)}`) } } } else { throw new Error('data must be object') } } return { data: { apiName, reqBodyBuffer: reqProto.encode(data).finish(), }, reqProto, resProto, decode: buf => resProto && resProto.decode(buf) } } module.exports = { generate, generateV2, } ================================================ FILE: cloudfunctions/ARDemo/svrkit-utils.static.js ================================================ // #lizard forgives /*eslint-disable*/ "use strict"; var $protobuf = require("protobufjs/minimal"); // Common aliases var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util; // Exported root namespace var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {}); /** * enARModelStatus enum. * @exports enARModelStatus * @enum {number} * @property {number} ARModel_Status_Default=0 ARModel_Status_Default value * @property {number} ARModel_Status_Init=1 ARModel_Status_Init value * @property {number} ARModel_Status_Sparse_Finished=2 ARModel_Status_Sparse_Finished value * @property {number} ARModel_Status_3d_Finished=3 ARModel_Status_3d_Finished value * @property {number} ARModel_Status_Object_Finished=4 ARModel_Status_Object_Finished value * @property {number} ARModel_Status_Marker_Finished=5 ARModel_Status_Marker_Finished value * @property {number} ARModel_Status_Fail=100 ARModel_Status_Fail value */ $root.enARModelStatus = (function() { var valuesById = {}, values = Object.create(valuesById); values[valuesById[0] = "ARModel_Status_Default"] = 0; values[valuesById[1] = "ARModel_Status_Init"] = 1; values[valuesById[2] = "ARModel_Status_Sparse_Finished"] = 2; values[valuesById[3] = "ARModel_Status_3d_Finished"] = 3; values[valuesById[4] = "ARModel_Status_Object_Finished"] = 4; values[valuesById[5] = "ARModel_Status_Marker_Finished"] = 5; values[valuesById[100] = "ARModel_Status_Fail"] = 100; return values; })(); /** * enARAlgorithmType enum. * @exports enARAlgorithmType * @enum {number} * @property {number} Algorithm_Type_3D_Object=1 Algorithm_Type_3D_Object value * @property {number} Algorithm_Type_3D_Marker=2 Algorithm_Type_3D_Marker value */ $root.enARAlgorithmType = (function() { var valuesById = {}, values = Object.create(valuesById); values[valuesById[1] = "Algorithm_Type_3D_Object"] = 1; values[valuesById[2] = "Algorithm_Type_3D_Marker"] = 2; return values; })(); /** * enARModelType enum. * @exports enARModelType * @enum {number} * @property {number} ARModel_Type_Sparse=1 ARModel_Type_Sparse value * @property {number} ARModel_Type_3D=2 ARModel_Type_3D value * @property {number} ARModel_Type_Marker=3 ARModel_Type_Marker value */ $root.enARModelType = (function() { var valuesById = {}, values = Object.create(valuesById); values[valuesById[1] = "ARModel_Type_Sparse"] = 1; values[valuesById[2] = "ARModel_Type_3D"] = 2; values[valuesById[3] = "ARModel_Type_Marker"] = 3; return values; })(); $root.ModelCos = (function() { /** * Properties of a ModelCos. * @exports IModelCos * @interface IModelCos * @property {Array.|null} [modelList] ModelCos modelList */ /** * Constructs a new ModelCos. * @exports ModelCos * @classdesc Represents a ModelCos. * @implements IModelCos * @constructor * @param {IModelCos=} [properties] Properties to set */ function ModelCos(properties) { this.modelList = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * ModelCos modelList. * @member {Array.} modelList * @memberof ModelCos * @instance */ ModelCos.prototype.modelList = $util.emptyArray; /** * Creates a new ModelCos instance using the specified properties. * @function create * @memberof ModelCos * @static * @param {IModelCos=} [properties] Properties to set * @returns {ModelCos} ModelCos instance */ ModelCos.create = function create(properties) { return new ModelCos(properties); }; /** * Encodes the specified ModelCos message. Does not implicitly {@link ModelCos.verify|verify} messages. * @function encode * @memberof ModelCos * @static * @param {IModelCos} message ModelCos message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ModelCos.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.modelList != null && message.modelList.length) for (var i = 0; i < message.modelList.length; ++i) $root.ModelCos.ModelCosId.encode(message.modelList[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** * Encodes the specified ModelCos message, length delimited. Does not implicitly {@link ModelCos.verify|verify} messages. * @function encodeDelimited * @memberof ModelCos * @static * @param {IModelCos} message ModelCos message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ModelCos.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a ModelCos message from the specified reader or buffer. * @function decode * @memberof ModelCos * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {ModelCos} ModelCos * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ModelCos.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ModelCos(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: if (!(message.modelList && message.modelList.length)) message.modelList = []; message.modelList.push($root.ModelCos.ModelCosId.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a ModelCos message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof ModelCos * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {ModelCos} ModelCos * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ModelCos.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a ModelCos message. * @function verify * @memberof ModelCos * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ ModelCos.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.modelList != null && message.hasOwnProperty("modelList")) { if (!Array.isArray(message.modelList)) return "modelList: array expected"; for (var i = 0; i < message.modelList.length; ++i) { var error = $root.ModelCos.ModelCosId.verify(message.modelList[i]); if (error) return "modelList." + error; } } return null; }; /** * Creates a ModelCos message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof ModelCos * @static * @param {Object.} object Plain object * @returns {ModelCos} ModelCos */ ModelCos.fromObject = function fromObject(object) { if (object instanceof $root.ModelCos) return object; var message = new $root.ModelCos(); if (object.modelList) { if (!Array.isArray(object.modelList)) throw TypeError(".ModelCos.modelList: array expected"); message.modelList = []; for (var i = 0; i < object.modelList.length; ++i) { if (typeof object.modelList[i] !== "object") throw TypeError(".ModelCos.modelList: object expected"); message.modelList[i] = $root.ModelCos.ModelCosId.fromObject(object.modelList[i]); } } return message; }; /** * Creates a plain object from a ModelCos message. Also converts values to other types if specified. * @function toObject * @memberof ModelCos * @static * @param {ModelCos} message ModelCos * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ ModelCos.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.arrays || options.defaults) object.modelList = []; if (message.modelList && message.modelList.length) { object.modelList = []; for (var j = 0; j < message.modelList.length; ++j) object.modelList[j] = $root.ModelCos.ModelCosId.toObject(message.modelList[j], options); } return object; }; /** * Converts this ModelCos to JSON. * @function toJSON * @memberof ModelCos * @instance * @returns {Object.} JSON object */ ModelCos.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; ModelCos.ModelCosId = (function() { /** * Properties of a ModelCosId. * @memberof ModelCos * @interface IModelCosId * @property {enARModelType|null} [modelType] ModelCosId modelType * @property {string|null} [modelCosid] ModelCosId modelCosid * @property {string|null} [errmsg] ModelCosId errmsg */ /** * Constructs a new ModelCosId. * @memberof ModelCos * @classdesc Represents a ModelCosId. * @implements IModelCosId * @constructor * @param {ModelCos.IModelCosId=} [properties] Properties to set */ function ModelCosId(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * ModelCosId modelType. * @member {enARModelType} modelType * @memberof ModelCos.ModelCosId * @instance */ ModelCosId.prototype.modelType = 1; /** * ModelCosId modelCosid. * @member {string} modelCosid * @memberof ModelCos.ModelCosId * @instance */ ModelCosId.prototype.modelCosid = ""; /** * ModelCosId errmsg. * @member {string} errmsg * @memberof ModelCos.ModelCosId * @instance */ ModelCosId.prototype.errmsg = ""; /** * Creates a new ModelCosId instance using the specified properties. * @function create * @memberof ModelCos.ModelCosId * @static * @param {ModelCos.IModelCosId=} [properties] Properties to set * @returns {ModelCos.ModelCosId} ModelCosId instance */ ModelCosId.create = function create(properties) { return new ModelCosId(properties); }; /** * Encodes the specified ModelCosId message. Does not implicitly {@link ModelCos.ModelCosId.verify|verify} messages. * @function encode * @memberof ModelCos.ModelCosId * @static * @param {ModelCos.IModelCosId} message ModelCosId message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ModelCosId.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.modelType != null && Object.hasOwnProperty.call(message, "modelType")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.modelType); if (message.modelCosid != null && Object.hasOwnProperty.call(message, "modelCosid")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.modelCosid); if (message.errmsg != null && Object.hasOwnProperty.call(message, "errmsg")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.errmsg); return writer; }; /** * Encodes the specified ModelCosId message, length delimited. Does not implicitly {@link ModelCos.ModelCosId.verify|verify} messages. * @function encodeDelimited * @memberof ModelCos.ModelCosId * @static * @param {ModelCos.IModelCosId} message ModelCosId message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ModelCosId.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a ModelCosId message from the specified reader or buffer. * @function decode * @memberof ModelCos.ModelCosId * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {ModelCos.ModelCosId} ModelCosId * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ModelCosId.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ModelCos.ModelCosId(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.modelType = reader.int32(); break; case 2: message.modelCosid = reader.string(); break; case 3: message.errmsg = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a ModelCosId message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof ModelCos.ModelCosId * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {ModelCos.ModelCosId} ModelCosId * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ModelCosId.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a ModelCosId message. * @function verify * @memberof ModelCos.ModelCosId * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ ModelCosId.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.modelType != null && message.hasOwnProperty("modelType")) switch (message.modelType) { default: return "modelType: enum value expected"; case 1: case 2: case 3: break; } if (message.modelCosid != null && message.hasOwnProperty("modelCosid")) if (!$util.isString(message.modelCosid)) return "modelCosid: string expected"; if (message.errmsg != null && message.hasOwnProperty("errmsg")) if (!$util.isString(message.errmsg)) return "errmsg: string expected"; return null; }; /** * Creates a ModelCosId message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof ModelCos.ModelCosId * @static * @param {Object.} object Plain object * @returns {ModelCos.ModelCosId} ModelCosId */ ModelCosId.fromObject = function fromObject(object) { if (object instanceof $root.ModelCos.ModelCosId) return object; var message = new $root.ModelCos.ModelCosId(); switch (object.modelType) { case "ARModel_Type_Sparse": case 1: message.modelType = 1; break; case "ARModel_Type_3D": case 2: message.modelType = 2; break; case "ARModel_Type_Marker": case 3: message.modelType = 3; break; } if (object.modelCosid != null) message.modelCosid = String(object.modelCosid); if (object.errmsg != null) message.errmsg = String(object.errmsg); return message; }; /** * Creates a plain object from a ModelCosId message. Also converts values to other types if specified. * @function toObject * @memberof ModelCos.ModelCosId * @static * @param {ModelCos.ModelCosId} message ModelCosId * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ ModelCosId.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.modelType = options.enums === String ? "ARModel_Type_Sparse" : 1; object.modelCosid = ""; object.errmsg = ""; } if (message.modelType != null && message.hasOwnProperty("modelType")) object.modelType = options.enums === String ? $root.enARModelType[message.modelType] : message.modelType; if (message.modelCosid != null && message.hasOwnProperty("modelCosid")) object.modelCosid = message.modelCosid; if (message.errmsg != null && message.hasOwnProperty("errmsg")) object.errmsg = message.errmsg; return object; }; /** * Converts this ModelCosId to JSON. * @function toJSON * @memberof ModelCos.ModelCosId * @instance * @returns {Object.} JSON object */ ModelCosId.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return ModelCosId; })(); return ModelCos; })(); $root.ARModel = (function() { /** * Properties of a ARModel. * @exports IARModel * @interface IARModel * @property {string|null} [cosid] ARModel cosid * @property {number|null} [bizuin] ARModel bizuin * @property {string|null} [name] ARModel name * @property {number|null} [uploadTime] ARModel uploadTime * @property {enARModelStatus|null} [modelStatus] ARModel modelStatus * @property {enARAlgorithmType|null} [algoType] ARModel algoType * @property {IModelCos|null} [modelCos] ARModel modelCos */ /** * Constructs a new ARModel. * @exports ARModel * @classdesc Represents a ARModel. * @implements IARModel * @constructor * @param {IARModel=} [properties] Properties to set */ function ARModel(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * ARModel cosid. * @member {string} cosid * @memberof ARModel * @instance */ ARModel.prototype.cosid = ""; /** * ARModel bizuin. * @member {number} bizuin * @memberof ARModel * @instance */ ARModel.prototype.bizuin = 0; /** * ARModel name. * @member {string} name * @memberof ARModel * @instance */ ARModel.prototype.name = ""; /** * ARModel uploadTime. * @member {number} uploadTime * @memberof ARModel * @instance */ ARModel.prototype.uploadTime = 0; /** * ARModel modelStatus. * @member {enARModelStatus} modelStatus * @memberof ARModel * @instance */ ARModel.prototype.modelStatus = 0; /** * ARModel algoType. * @member {enARAlgorithmType} algoType * @memberof ARModel * @instance */ ARModel.prototype.algoType = 1; /** * ARModel modelCos. * @member {IModelCos|null|undefined} modelCos * @memberof ARModel * @instance */ ARModel.prototype.modelCos = null; /** * Creates a new ARModel instance using the specified properties. * @function create * @memberof ARModel * @static * @param {IARModel=} [properties] Properties to set * @returns {ARModel} ARModel instance */ ARModel.create = function create(properties) { return new ARModel(properties); }; /** * Encodes the specified ARModel message. Does not implicitly {@link ARModel.verify|verify} messages. * @function encode * @memberof ARModel * @static * @param {IARModel} message ARModel message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ARModel.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.cosid != null && Object.hasOwnProperty.call(message, "cosid")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.cosid); if (message.bizuin != null && Object.hasOwnProperty.call(message, "bizuin")) writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.bizuin); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.name); if (message.uploadTime != null && Object.hasOwnProperty.call(message, "uploadTime")) writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.uploadTime); if (message.modelStatus != null && Object.hasOwnProperty.call(message, "modelStatus")) writer.uint32(/* id 5, wireType 0 =*/40).int32(message.modelStatus); if (message.algoType != null && Object.hasOwnProperty.call(message, "algoType")) writer.uint32(/* id 6, wireType 0 =*/48).int32(message.algoType); if (message.modelCos != null && Object.hasOwnProperty.call(message, "modelCos")) $root.ModelCos.encode(message.modelCos, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); return writer; }; /** * Encodes the specified ARModel message, length delimited. Does not implicitly {@link ARModel.verify|verify} messages. * @function encodeDelimited * @memberof ARModel * @static * @param {IARModel} message ARModel message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ARModel.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a ARModel message from the specified reader or buffer. * @function decode * @memberof ARModel * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {ARModel} ARModel * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ARModel.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ARModel(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.cosid = reader.string(); break; case 2: message.bizuin = reader.uint32(); break; case 3: message.name = reader.string(); break; case 4: message.uploadTime = reader.uint32(); break; case 5: message.modelStatus = reader.int32(); break; case 6: message.algoType = reader.int32(); break; case 7: message.modelCos = $root.ModelCos.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a ARModel message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof ARModel * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {ARModel} ARModel * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ARModel.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a ARModel message. * @function verify * @memberof ARModel * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ ARModel.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.cosid != null && message.hasOwnProperty("cosid")) if (!$util.isString(message.cosid)) return "cosid: string expected"; if (message.bizuin != null && message.hasOwnProperty("bizuin")) if (!$util.isInteger(message.bizuin)) return "bizuin: integer expected"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; if (message.uploadTime != null && message.hasOwnProperty("uploadTime")) if (!$util.isInteger(message.uploadTime)) return "uploadTime: integer expected"; if (message.modelStatus != null && message.hasOwnProperty("modelStatus")) switch (message.modelStatus) { default: return "modelStatus: enum value expected"; case 0: case 1: case 2: case 3: case 4: case 5: case 100: break; } if (message.algoType != null && message.hasOwnProperty("algoType")) switch (message.algoType) { default: return "algoType: enum value expected"; case 1: case 2: break; } if (message.modelCos != null && message.hasOwnProperty("modelCos")) { var error = $root.ModelCos.verify(message.modelCos); if (error) return "modelCos." + error; } return null; }; /** * Creates a ARModel message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof ARModel * @static * @param {Object.} object Plain object * @returns {ARModel} ARModel */ ARModel.fromObject = function fromObject(object) { if (object instanceof $root.ARModel) return object; var message = new $root.ARModel(); if (object.cosid != null) message.cosid = String(object.cosid); if (object.bizuin != null) message.bizuin = object.bizuin >>> 0; if (object.name != null) message.name = String(object.name); if (object.uploadTime != null) message.uploadTime = object.uploadTime >>> 0; switch (object.modelStatus) { case "ARModel_Status_Default": case 0: message.modelStatus = 0; break; case "ARModel_Status_Init": case 1: message.modelStatus = 1; break; case "ARModel_Status_Sparse_Finished": case 2: message.modelStatus = 2; break; case "ARModel_Status_3d_Finished": case 3: message.modelStatus = 3; break; case "ARModel_Status_Object_Finished": case 4: message.modelStatus = 4; break; case "ARModel_Status_Marker_Finished": case 5: message.modelStatus = 5; break; case "ARModel_Status_Fail": case 100: message.modelStatus = 100; break; } switch (object.algoType) { case "Algorithm_Type_3D_Object": case 1: message.algoType = 1; break; case "Algorithm_Type_3D_Marker": case 2: message.algoType = 2; break; } if (object.modelCos != null) { if (typeof object.modelCos !== "object") throw TypeError(".ARModel.modelCos: object expected"); message.modelCos = $root.ModelCos.fromObject(object.modelCos); } return message; }; /** * Creates a plain object from a ARModel message. Also converts values to other types if specified. * @function toObject * @memberof ARModel * @static * @param {ARModel} message ARModel * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ ARModel.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.cosid = ""; object.bizuin = 0; object.name = ""; object.uploadTime = 0; object.modelStatus = options.enums === String ? "ARModel_Status_Default" : 0; object.algoType = options.enums === String ? "Algorithm_Type_3D_Object" : 1; object.modelCos = null; } if (message.cosid != null && message.hasOwnProperty("cosid")) object.cosid = message.cosid; if (message.bizuin != null && message.hasOwnProperty("bizuin")) object.bizuin = message.bizuin; if (message.name != null && message.hasOwnProperty("name")) object.name = message.name; if (message.uploadTime != null && message.hasOwnProperty("uploadTime")) object.uploadTime = message.uploadTime; if (message.modelStatus != null && message.hasOwnProperty("modelStatus")) object.modelStatus = options.enums === String ? $root.enARModelStatus[message.modelStatus] : message.modelStatus; if (message.algoType != null && message.hasOwnProperty("algoType")) object.algoType = options.enums === String ? $root.enARAlgorithmType[message.algoType] : message.algoType; if (message.modelCos != null && message.hasOwnProperty("modelCos")) object.modelCos = $root.ModelCos.toObject(message.modelCos, options); return object; }; /** * Converts this ARModel to JSON. * @function toJSON * @memberof ARModel * @instance * @returns {Object.} JSON object */ ARModel.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return ARModel; })(); $root.GetARModelListReq = (function() { /** * Properties of a GetARModelListReq. * @exports IGetARModelListReq * @interface IGetARModelListReq * @property {number|null} [bizuin] GetARModelListReq bizuin * @property {number|null} [modelStatus] GetARModelListReq modelStatus * @property {number|null} [startTime] GetARModelListReq startTime * @property {number|null} [endTime] GetARModelListReq endTime * @property {number|null} [offset] GetARModelListReq offset * @property {number|null} [limit] GetARModelListReq limit * @property {number|null} [algoType] GetARModelListReq algoType */ /** * Constructs a new GetARModelListReq. * @exports GetARModelListReq * @classdesc Represents a GetARModelListReq. * @implements IGetARModelListReq * @constructor * @param {IGetARModelListReq=} [properties] Properties to set */ function GetARModelListReq(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * GetARModelListReq bizuin. * @member {number} bizuin * @memberof GetARModelListReq * @instance */ GetARModelListReq.prototype.bizuin = 0; /** * GetARModelListReq modelStatus. * @member {number} modelStatus * @memberof GetARModelListReq * @instance */ GetARModelListReq.prototype.modelStatus = 0; /** * GetARModelListReq startTime. * @member {number} startTime * @memberof GetARModelListReq * @instance */ GetARModelListReq.prototype.startTime = 0; /** * GetARModelListReq endTime. * @member {number} endTime * @memberof GetARModelListReq * @instance */ GetARModelListReq.prototype.endTime = 0; /** * GetARModelListReq offset. * @member {number} offset * @memberof GetARModelListReq * @instance */ GetARModelListReq.prototype.offset = 0; /** * GetARModelListReq limit. * @member {number} limit * @memberof GetARModelListReq * @instance */ GetARModelListReq.prototype.limit = 0; /** * GetARModelListReq algoType. * @member {number} algoType * @memberof GetARModelListReq * @instance */ GetARModelListReq.prototype.algoType = 0; /** * Creates a new GetARModelListReq instance using the specified properties. * @function create * @memberof GetARModelListReq * @static * @param {IGetARModelListReq=} [properties] Properties to set * @returns {GetARModelListReq} GetARModelListReq instance */ GetARModelListReq.create = function create(properties) { return new GetARModelListReq(properties); }; /** * Encodes the specified GetARModelListReq message. Does not implicitly {@link GetARModelListReq.verify|verify} messages. * @function encode * @memberof GetARModelListReq * @static * @param {IGetARModelListReq} message GetARModelListReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GetARModelListReq.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.bizuin != null && Object.hasOwnProperty.call(message, "bizuin")) writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.bizuin); if (message.modelStatus != null && Object.hasOwnProperty.call(message, "modelStatus")) writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.modelStatus); if (message.startTime != null && Object.hasOwnProperty.call(message, "startTime")) writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.startTime); if (message.endTime != null && Object.hasOwnProperty.call(message, "endTime")) writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.endTime); if (message.offset != null && Object.hasOwnProperty.call(message, "offset")) writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.offset); if (message.limit != null && Object.hasOwnProperty.call(message, "limit")) writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.limit); if (message.algoType != null && Object.hasOwnProperty.call(message, "algoType")) writer.uint32(/* id 7, wireType 0 =*/56).uint32(message.algoType); return writer; }; /** * Encodes the specified GetARModelListReq message, length delimited. Does not implicitly {@link GetARModelListReq.verify|verify} messages. * @function encodeDelimited * @memberof GetARModelListReq * @static * @param {IGetARModelListReq} message GetARModelListReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GetARModelListReq.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a GetARModelListReq message from the specified reader or buffer. * @function decode * @memberof GetARModelListReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {GetARModelListReq} GetARModelListReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GetARModelListReq.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.GetARModelListReq(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.bizuin = reader.uint32(); break; case 2: message.modelStatus = reader.uint32(); break; case 3: message.startTime = reader.uint32(); break; case 4: message.endTime = reader.uint32(); break; case 5: message.offset = reader.uint32(); break; case 6: message.limit = reader.uint32(); break; case 7: message.algoType = reader.uint32(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a GetARModelListReq message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof GetARModelListReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {GetARModelListReq} GetARModelListReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GetARModelListReq.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a GetARModelListReq message. * @function verify * @memberof GetARModelListReq * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ GetARModelListReq.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.bizuin != null && message.hasOwnProperty("bizuin")) if (!$util.isInteger(message.bizuin)) return "bizuin: integer expected"; if (message.modelStatus != null && message.hasOwnProperty("modelStatus")) if (!$util.isInteger(message.modelStatus)) return "modelStatus: integer expected"; if (message.startTime != null && message.hasOwnProperty("startTime")) if (!$util.isInteger(message.startTime)) return "startTime: integer expected"; if (message.endTime != null && message.hasOwnProperty("endTime")) if (!$util.isInteger(message.endTime)) return "endTime: integer expected"; if (message.offset != null && message.hasOwnProperty("offset")) if (!$util.isInteger(message.offset)) return "offset: integer expected"; if (message.limit != null && message.hasOwnProperty("limit")) if (!$util.isInteger(message.limit)) return "limit: integer expected"; if (message.algoType != null && message.hasOwnProperty("algoType")) if (!$util.isInteger(message.algoType)) return "algoType: integer expected"; return null; }; /** * Creates a GetARModelListReq message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof GetARModelListReq * @static * @param {Object.} object Plain object * @returns {GetARModelListReq} GetARModelListReq */ GetARModelListReq.fromObject = function fromObject(object) { if (object instanceof $root.GetARModelListReq) return object; var message = new $root.GetARModelListReq(); if (object.bizuin != null) message.bizuin = object.bizuin >>> 0; if (object.modelStatus != null) message.modelStatus = object.modelStatus >>> 0; if (object.startTime != null) message.startTime = object.startTime >>> 0; if (object.endTime != null) message.endTime = object.endTime >>> 0; if (object.offset != null) message.offset = object.offset >>> 0; if (object.limit != null) message.limit = object.limit >>> 0; if (object.algoType != null) message.algoType = object.algoType >>> 0; return message; }; /** * Creates a plain object from a GetARModelListReq message. Also converts values to other types if specified. * @function toObject * @memberof GetARModelListReq * @static * @param {GetARModelListReq} message GetARModelListReq * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ GetARModelListReq.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.bizuin = 0; object.modelStatus = 0; object.startTime = 0; object.endTime = 0; object.offset = 0; object.limit = 0; object.algoType = 0; } if (message.bizuin != null && message.hasOwnProperty("bizuin")) object.bizuin = message.bizuin; if (message.modelStatus != null && message.hasOwnProperty("modelStatus")) object.modelStatus = message.modelStatus; if (message.startTime != null && message.hasOwnProperty("startTime")) object.startTime = message.startTime; if (message.endTime != null && message.hasOwnProperty("endTime")) object.endTime = message.endTime; if (message.offset != null && message.hasOwnProperty("offset")) object.offset = message.offset; if (message.limit != null && message.hasOwnProperty("limit")) object.limit = message.limit; if (message.algoType != null && message.hasOwnProperty("algoType")) object.algoType = message.algoType; return object; }; /** * Converts this GetARModelListReq to JSON. * @function toJSON * @memberof GetARModelListReq * @instance * @returns {Object.} JSON object */ GetARModelListReq.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return GetARModelListReq; })(); $root.GetARModelListResp = (function() { /** * Properties of a GetARModelListResp. * @exports IGetARModelListResp * @interface IGetARModelListResp * @property {Array.|null} [modelList] GetARModelListResp modelList */ /** * Constructs a new GetARModelListResp. * @exports GetARModelListResp * @classdesc Represents a GetARModelListResp. * @implements IGetARModelListResp * @constructor * @param {IGetARModelListResp=} [properties] Properties to set */ function GetARModelListResp(properties) { this.modelList = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * GetARModelListResp modelList. * @member {Array.} modelList * @memberof GetARModelListResp * @instance */ GetARModelListResp.prototype.modelList = $util.emptyArray; /** * Creates a new GetARModelListResp instance using the specified properties. * @function create * @memberof GetARModelListResp * @static * @param {IGetARModelListResp=} [properties] Properties to set * @returns {GetARModelListResp} GetARModelListResp instance */ GetARModelListResp.create = function create(properties) { return new GetARModelListResp(properties); }; /** * Encodes the specified GetARModelListResp message. Does not implicitly {@link GetARModelListResp.verify|verify} messages. * @function encode * @memberof GetARModelListResp * @static * @param {IGetARModelListResp} message GetARModelListResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GetARModelListResp.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.modelList != null && message.modelList.length) for (var i = 0; i < message.modelList.length; ++i) $root.ARModel.encode(message.modelList[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** * Encodes the specified GetARModelListResp message, length delimited. Does not implicitly {@link GetARModelListResp.verify|verify} messages. * @function encodeDelimited * @memberof GetARModelListResp * @static * @param {IGetARModelListResp} message GetARModelListResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GetARModelListResp.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a GetARModelListResp message from the specified reader or buffer. * @function decode * @memberof GetARModelListResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {GetARModelListResp} GetARModelListResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GetARModelListResp.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.GetARModelListResp(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: if (!(message.modelList && message.modelList.length)) message.modelList = []; message.modelList.push($root.ARModel.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a GetARModelListResp message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof GetARModelListResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {GetARModelListResp} GetARModelListResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GetARModelListResp.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a GetARModelListResp message. * @function verify * @memberof GetARModelListResp * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ GetARModelListResp.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.modelList != null && message.hasOwnProperty("modelList")) { if (!Array.isArray(message.modelList)) return "modelList: array expected"; for (var i = 0; i < message.modelList.length; ++i) { var error = $root.ARModel.verify(message.modelList[i]); if (error) return "modelList." + error; } } return null; }; /** * Creates a GetARModelListResp message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof GetARModelListResp * @static * @param {Object.} object Plain object * @returns {GetARModelListResp} GetARModelListResp */ GetARModelListResp.fromObject = function fromObject(object) { if (object instanceof $root.GetARModelListResp) return object; var message = new $root.GetARModelListResp(); if (object.modelList) { if (!Array.isArray(object.modelList)) throw TypeError(".GetARModelListResp.modelList: array expected"); message.modelList = []; for (var i = 0; i < object.modelList.length; ++i) { if (typeof object.modelList[i] !== "object") throw TypeError(".GetARModelListResp.modelList: object expected"); message.modelList[i] = $root.ARModel.fromObject(object.modelList[i]); } } return message; }; /** * Creates a plain object from a GetARModelListResp message. Also converts values to other types if specified. * @function toObject * @memberof GetARModelListResp * @static * @param {GetARModelListResp} message GetARModelListResp * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ GetARModelListResp.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.arrays || options.defaults) object.modelList = []; if (message.modelList && message.modelList.length) { object.modelList = []; for (var j = 0; j < message.modelList.length; ++j) object.modelList[j] = $root.ARModel.toObject(message.modelList[j], options); } return object; }; /** * Converts this GetARModelListResp to JSON. * @function toJSON * @memberof GetARModelListResp * @instance * @returns {Object.} JSON object */ GetARModelListResp.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return GetARModelListResp; })(); $root.GenerateARModelReq = (function() { /** * Properties of a GenerateARModelReq. * @exports IGenerateARModelReq * @interface IGenerateARModelReq * @property {number|null} [bizuin] GenerateARModelReq bizuin * @property {string|null} [name] GenerateARModelReq name * @property {Uint8Array|null} [buffer] GenerateARModelReq buffer * @property {string|null} [url] GenerateARModelReq url * @property {enARAlgorithmType|null} [algoType] GenerateARModelReq algoType * @property {number|null} [lod] GenerateARModelReq lod * @property {boolean|null} [getmesh] GenerateARModelReq getmesh * @property {boolean|null} [gettexture] GenerateARModelReq gettexture */ /** * Constructs a new GenerateARModelReq. * @exports GenerateARModelReq * @classdesc Represents a GenerateARModelReq. * @implements IGenerateARModelReq * @constructor * @param {IGenerateARModelReq=} [properties] Properties to set */ function GenerateARModelReq(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * GenerateARModelReq bizuin. * @member {number} bizuin * @memberof GenerateARModelReq * @instance */ GenerateARModelReq.prototype.bizuin = 0; /** * GenerateARModelReq name. * @member {string} name * @memberof GenerateARModelReq * @instance */ GenerateARModelReq.prototype.name = ""; /** * GenerateARModelReq buffer. * @member {Uint8Array} buffer * @memberof GenerateARModelReq * @instance */ GenerateARModelReq.prototype.buffer = $util.newBuffer([]); /** * GenerateARModelReq url. * @member {string} url * @memberof GenerateARModelReq * @instance */ GenerateARModelReq.prototype.url = ""; /** * GenerateARModelReq algoType. * @member {enARAlgorithmType} algoType * @memberof GenerateARModelReq * @instance */ GenerateARModelReq.prototype.algoType = 1; /** * GenerateARModelReq lod. * @member {number} lod * @memberof GenerateARModelReq * @instance */ GenerateARModelReq.prototype.lod = 0; /** * GenerateARModelReq getmesh. * @member {boolean} getmesh * @memberof GenerateARModelReq * @instance */ GenerateARModelReq.prototype.getmesh = false; /** * GenerateARModelReq gettexture. * @member {boolean} gettexture * @memberof GenerateARModelReq * @instance */ GenerateARModelReq.prototype.gettexture = false; /** * Creates a new GenerateARModelReq instance using the specified properties. * @function create * @memberof GenerateARModelReq * @static * @param {IGenerateARModelReq=} [properties] Properties to set * @returns {GenerateARModelReq} GenerateARModelReq instance */ GenerateARModelReq.create = function create(properties) { return new GenerateARModelReq(properties); }; /** * Encodes the specified GenerateARModelReq message. Does not implicitly {@link GenerateARModelReq.verify|verify} messages. * @function encode * @memberof GenerateARModelReq * @static * @param {IGenerateARModelReq} message GenerateARModelReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GenerateARModelReq.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.bizuin != null && Object.hasOwnProperty.call(message, "bizuin")) writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.bizuin); if (message.name != null && Object.hasOwnProperty.call(message, "name")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.name); if (message.buffer != null && Object.hasOwnProperty.call(message, "buffer")) writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.buffer); if (message.url != null && Object.hasOwnProperty.call(message, "url")) writer.uint32(/* id 4, wireType 2 =*/34).string(message.url); if (message.algoType != null && Object.hasOwnProperty.call(message, "algoType")) writer.uint32(/* id 5, wireType 0 =*/40).int32(message.algoType); if (message.lod != null && Object.hasOwnProperty.call(message, "lod")) writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.lod); if (message.getmesh != null && Object.hasOwnProperty.call(message, "getmesh")) writer.uint32(/* id 7, wireType 0 =*/56).bool(message.getmesh); if (message.gettexture != null && Object.hasOwnProperty.call(message, "gettexture")) writer.uint32(/* id 8, wireType 0 =*/64).bool(message.gettexture); return writer; }; /** * Encodes the specified GenerateARModelReq message, length delimited. Does not implicitly {@link GenerateARModelReq.verify|verify} messages. * @function encodeDelimited * @memberof GenerateARModelReq * @static * @param {IGenerateARModelReq} message GenerateARModelReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GenerateARModelReq.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a GenerateARModelReq message from the specified reader or buffer. * @function decode * @memberof GenerateARModelReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {GenerateARModelReq} GenerateARModelReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GenerateARModelReq.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.GenerateARModelReq(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.bizuin = reader.uint32(); break; case 2: message.name = reader.string(); break; case 3: message.buffer = reader.bytes(); break; case 4: message.url = reader.string(); break; case 5: message.algoType = reader.int32(); break; case 6: message.lod = reader.uint32(); break; case 7: message.getmesh = reader.bool(); break; case 8: message.gettexture = reader.bool(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a GenerateARModelReq message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof GenerateARModelReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {GenerateARModelReq} GenerateARModelReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GenerateARModelReq.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a GenerateARModelReq message. * @function verify * @memberof GenerateARModelReq * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ GenerateARModelReq.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.bizuin != null && message.hasOwnProperty("bizuin")) if (!$util.isInteger(message.bizuin)) return "bizuin: integer expected"; if (message.name != null && message.hasOwnProperty("name")) if (!$util.isString(message.name)) return "name: string expected"; if (message.buffer != null && message.hasOwnProperty("buffer")) if (!(message.buffer && typeof message.buffer.length === "number" || $util.isString(message.buffer))) return "buffer: buffer expected"; if (message.url != null && message.hasOwnProperty("url")) if (!$util.isString(message.url)) return "url: string expected"; if (message.algoType != null && message.hasOwnProperty("algoType")) switch (message.algoType) { default: return "algoType: enum value expected"; case 1: case 2: break; } if (message.lod != null && message.hasOwnProperty("lod")) if (!$util.isInteger(message.lod)) return "lod: integer expected"; if (message.getmesh != null && message.hasOwnProperty("getmesh")) if (typeof message.getmesh !== "boolean") return "getmesh: boolean expected"; if (message.gettexture != null && message.hasOwnProperty("gettexture")) if (typeof message.gettexture !== "boolean") return "gettexture: boolean expected"; return null; }; /** * Creates a GenerateARModelReq message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof GenerateARModelReq * @static * @param {Object.} object Plain object * @returns {GenerateARModelReq} GenerateARModelReq */ GenerateARModelReq.fromObject = function fromObject(object) { if (object instanceof $root.GenerateARModelReq) return object; var message = new $root.GenerateARModelReq(); if (object.bizuin != null) message.bizuin = object.bizuin >>> 0; if (object.name != null) message.name = String(object.name); if (object.buffer != null) if (typeof object.buffer === "string") $util.base64.decode(object.buffer, message.buffer = $util.newBuffer($util.base64.length(object.buffer)), 0); else if (object.buffer.length) message.buffer = object.buffer; if (object.url != null) message.url = String(object.url); switch (object.algoType) { case "Algorithm_Type_3D_Object": case 1: message.algoType = 1; break; case "Algorithm_Type_3D_Marker": case 2: message.algoType = 2; break; } if (object.lod != null) message.lod = object.lod >>> 0; if (object.getmesh != null) message.getmesh = Boolean(object.getmesh); if (object.gettexture != null) message.gettexture = Boolean(object.gettexture); return message; }; /** * Creates a plain object from a GenerateARModelReq message. Also converts values to other types if specified. * @function toObject * @memberof GenerateARModelReq * @static * @param {GenerateARModelReq} message GenerateARModelReq * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ GenerateARModelReq.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.bizuin = 0; object.name = ""; if (options.bytes === String) object.buffer = ""; else { object.buffer = []; if (options.bytes !== Array) object.buffer = $util.newBuffer(object.buffer); } object.url = ""; object.algoType = options.enums === String ? "Algorithm_Type_3D_Object" : 1; object.lod = 0; object.getmesh = false; object.gettexture = false; } if (message.bizuin != null && message.hasOwnProperty("bizuin")) object.bizuin = message.bizuin; if (message.name != null && message.hasOwnProperty("name")) object.name = message.name; if (message.buffer != null && message.hasOwnProperty("buffer")) object.buffer = options.bytes === String ? $util.base64.encode(message.buffer, 0, message.buffer.length) : options.bytes === Array ? Array.prototype.slice.call(message.buffer) : message.buffer; if (message.url != null && message.hasOwnProperty("url")) object.url = message.url; if (message.algoType != null && message.hasOwnProperty("algoType")) object.algoType = options.enums === String ? $root.enARAlgorithmType[message.algoType] : message.algoType; if (message.lod != null && message.hasOwnProperty("lod")) object.lod = message.lod; if (message.getmesh != null && message.hasOwnProperty("getmesh")) object.getmesh = message.getmesh; if (message.gettexture != null && message.hasOwnProperty("gettexture")) object.gettexture = message.gettexture; return object; }; /** * Converts this GenerateARModelReq to JSON. * @function toJSON * @memberof GenerateARModelReq * @instance * @returns {Object.} JSON object */ GenerateARModelReq.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return GenerateARModelReq; })(); $root.GenerateARModelResp = (function() { /** * Properties of a GenerateARModelResp. * @exports IGenerateARModelResp * @interface IGenerateARModelResp * @property {string|null} [url] GenerateARModelResp url * @property {string|null} [host] GenerateARModelResp host * @property {string|null} [cosid] GenerateARModelResp cosid * @property {number|null} [lod] GenerateARModelResp lod * @property {boolean|null} [getmesh] GenerateARModelResp getmesh * @property {boolean|null} [gettexture] GenerateARModelResp gettexture */ /** * Constructs a new GenerateARModelResp. * @exports GenerateARModelResp * @classdesc Represents a GenerateARModelResp. * @implements IGenerateARModelResp * @constructor * @param {IGenerateARModelResp=} [properties] Properties to set */ function GenerateARModelResp(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * GenerateARModelResp url. * @member {string} url * @memberof GenerateARModelResp * @instance */ GenerateARModelResp.prototype.url = ""; /** * GenerateARModelResp host. * @member {string} host * @memberof GenerateARModelResp * @instance */ GenerateARModelResp.prototype.host = ""; /** * GenerateARModelResp cosid. * @member {string} cosid * @memberof GenerateARModelResp * @instance */ GenerateARModelResp.prototype.cosid = ""; /** * GenerateARModelResp lod. * @member {number} lod * @memberof GenerateARModelResp * @instance */ GenerateARModelResp.prototype.lod = 0; /** * GenerateARModelResp getmesh. * @member {boolean} getmesh * @memberof GenerateARModelResp * @instance */ GenerateARModelResp.prototype.getmesh = false; /** * GenerateARModelResp gettexture. * @member {boolean} gettexture * @memberof GenerateARModelResp * @instance */ GenerateARModelResp.prototype.gettexture = false; /** * Creates a new GenerateARModelResp instance using the specified properties. * @function create * @memberof GenerateARModelResp * @static * @param {IGenerateARModelResp=} [properties] Properties to set * @returns {GenerateARModelResp} GenerateARModelResp instance */ GenerateARModelResp.create = function create(properties) { return new GenerateARModelResp(properties); }; /** * Encodes the specified GenerateARModelResp message. Does not implicitly {@link GenerateARModelResp.verify|verify} messages. * @function encode * @memberof GenerateARModelResp * @static * @param {IGenerateARModelResp} message GenerateARModelResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GenerateARModelResp.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.url != null && Object.hasOwnProperty.call(message, "url")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.url); if (message.host != null && Object.hasOwnProperty.call(message, "host")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.host); if (message.cosid != null && Object.hasOwnProperty.call(message, "cosid")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.cosid); if (message.lod != null && Object.hasOwnProperty.call(message, "lod")) writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.lod); if (message.getmesh != null && Object.hasOwnProperty.call(message, "getmesh")) writer.uint32(/* id 5, wireType 0 =*/40).bool(message.getmesh); if (message.gettexture != null && Object.hasOwnProperty.call(message, "gettexture")) writer.uint32(/* id 6, wireType 0 =*/48).bool(message.gettexture); return writer; }; /** * Encodes the specified GenerateARModelResp message, length delimited. Does not implicitly {@link GenerateARModelResp.verify|verify} messages. * @function encodeDelimited * @memberof GenerateARModelResp * @static * @param {IGenerateARModelResp} message GenerateARModelResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GenerateARModelResp.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a GenerateARModelResp message from the specified reader or buffer. * @function decode * @memberof GenerateARModelResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {GenerateARModelResp} GenerateARModelResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GenerateARModelResp.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.GenerateARModelResp(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.url = reader.string(); break; case 2: message.host = reader.string(); break; case 3: message.cosid = reader.string(); break; case 4: message.lod = reader.uint32(); break; case 5: message.getmesh = reader.bool(); break; case 6: message.gettexture = reader.bool(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a GenerateARModelResp message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof GenerateARModelResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {GenerateARModelResp} GenerateARModelResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GenerateARModelResp.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a GenerateARModelResp message. * @function verify * @memberof GenerateARModelResp * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ GenerateARModelResp.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.url != null && message.hasOwnProperty("url")) if (!$util.isString(message.url)) return "url: string expected"; if (message.host != null && message.hasOwnProperty("host")) if (!$util.isString(message.host)) return "host: string expected"; if (message.cosid != null && message.hasOwnProperty("cosid")) if (!$util.isString(message.cosid)) return "cosid: string expected"; if (message.lod != null && message.hasOwnProperty("lod")) if (!$util.isInteger(message.lod)) return "lod: integer expected"; if (message.getmesh != null && message.hasOwnProperty("getmesh")) if (typeof message.getmesh !== "boolean") return "getmesh: boolean expected"; if (message.gettexture != null && message.hasOwnProperty("gettexture")) if (typeof message.gettexture !== "boolean") return "gettexture: boolean expected"; return null; }; /** * Creates a GenerateARModelResp message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof GenerateARModelResp * @static * @param {Object.} object Plain object * @returns {GenerateARModelResp} GenerateARModelResp */ GenerateARModelResp.fromObject = function fromObject(object) { if (object instanceof $root.GenerateARModelResp) return object; var message = new $root.GenerateARModelResp(); if (object.url != null) message.url = String(object.url); if (object.host != null) message.host = String(object.host); if (object.cosid != null) message.cosid = String(object.cosid); if (object.lod != null) message.lod = object.lod >>> 0; if (object.getmesh != null) message.getmesh = Boolean(object.getmesh); if (object.gettexture != null) message.gettexture = Boolean(object.gettexture); return message; }; /** * Creates a plain object from a GenerateARModelResp message. Also converts values to other types if specified. * @function toObject * @memberof GenerateARModelResp * @static * @param {GenerateARModelResp} message GenerateARModelResp * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ GenerateARModelResp.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.url = ""; object.host = ""; object.cosid = ""; object.lod = 0; object.getmesh = false; object.gettexture = false; } if (message.url != null && message.hasOwnProperty("url")) object.url = message.url; if (message.host != null && message.hasOwnProperty("host")) object.host = message.host; if (message.cosid != null && message.hasOwnProperty("cosid")) object.cosid = message.cosid; if (message.lod != null && message.hasOwnProperty("lod")) object.lod = message.lod; if (message.getmesh != null && message.hasOwnProperty("getmesh")) object.getmesh = message.getmesh; if (message.gettexture != null && message.hasOwnProperty("gettexture")) object.gettexture = message.gettexture; return object; }; /** * Converts this GenerateARModelResp to JSON. * @function toJSON * @memberof GenerateARModelResp * @instance * @returns {Object.} JSON object */ GenerateARModelResp.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return GenerateARModelResp; })(); $root.ARModelData = (function() { /** * Properties of a ARModelData. * @exports IARModelData * @interface IARModelData * @property {Uint8Array|null} [meshModel] ARModelData meshModel * @property {Uint8Array|null} [textureModel] ARModelData textureModel * @property {Uint8Array|null} [preview] ARModelData preview * @property {Uint8Array|null} [meshBlob] ARModelData meshBlob * @property {Uint8Array|null} [textureBlob] ARModelData textureBlob */ /** * Constructs a new ARModelData. * @exports ARModelData * @classdesc Represents a ARModelData. * @implements IARModelData * @constructor * @param {IARModelData=} [properties] Properties to set */ function ARModelData(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * ARModelData meshModel. * @member {Uint8Array} meshModel * @memberof ARModelData * @instance */ ARModelData.prototype.meshModel = $util.newBuffer([]); /** * ARModelData textureModel. * @member {Uint8Array} textureModel * @memberof ARModelData * @instance */ ARModelData.prototype.textureModel = $util.newBuffer([]); /** * ARModelData preview. * @member {Uint8Array} preview * @memberof ARModelData * @instance */ ARModelData.prototype.preview = $util.newBuffer([]); /** * ARModelData meshBlob. * @member {Uint8Array} meshBlob * @memberof ARModelData * @instance */ ARModelData.prototype.meshBlob = $util.newBuffer([]); /** * ARModelData textureBlob. * @member {Uint8Array} textureBlob * @memberof ARModelData * @instance */ ARModelData.prototype.textureBlob = $util.newBuffer([]); /** * Creates a new ARModelData instance using the specified properties. * @function create * @memberof ARModelData * @static * @param {IARModelData=} [properties] Properties to set * @returns {ARModelData} ARModelData instance */ ARModelData.create = function create(properties) { return new ARModelData(properties); }; /** * Encodes the specified ARModelData message. Does not implicitly {@link ARModelData.verify|verify} messages. * @function encode * @memberof ARModelData * @static * @param {IARModelData} message ARModelData message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ARModelData.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.meshModel != null && Object.hasOwnProperty.call(message, "meshModel")) writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.meshModel); if (message.textureModel != null && Object.hasOwnProperty.call(message, "textureModel")) writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.textureModel); if (message.preview != null && Object.hasOwnProperty.call(message, "preview")) writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.preview); if (message.meshBlob != null && Object.hasOwnProperty.call(message, "meshBlob")) writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.meshBlob); if (message.textureBlob != null && Object.hasOwnProperty.call(message, "textureBlob")) writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.textureBlob); return writer; }; /** * Encodes the specified ARModelData message, length delimited. Does not implicitly {@link ARModelData.verify|verify} messages. * @function encodeDelimited * @memberof ARModelData * @static * @param {IARModelData} message ARModelData message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ARModelData.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a ARModelData message from the specified reader or buffer. * @function decode * @memberof ARModelData * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {ARModelData} ARModelData * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ARModelData.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ARModelData(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.meshModel = reader.bytes(); break; case 2: message.textureModel = reader.bytes(); break; case 3: message.preview = reader.bytes(); break; case 4: message.meshBlob = reader.bytes(); break; case 5: message.textureBlob = reader.bytes(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a ARModelData message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof ARModelData * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {ARModelData} ARModelData * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ARModelData.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a ARModelData message. * @function verify * @memberof ARModelData * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ ARModelData.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.meshModel != null && message.hasOwnProperty("meshModel")) if (!(message.meshModel && typeof message.meshModel.length === "number" || $util.isString(message.meshModel))) return "meshModel: buffer expected"; if (message.textureModel != null && message.hasOwnProperty("textureModel")) if (!(message.textureModel && typeof message.textureModel.length === "number" || $util.isString(message.textureModel))) return "textureModel: buffer expected"; if (message.preview != null && message.hasOwnProperty("preview")) if (!(message.preview && typeof message.preview.length === "number" || $util.isString(message.preview))) return "preview: buffer expected"; if (message.meshBlob != null && message.hasOwnProperty("meshBlob")) if (!(message.meshBlob && typeof message.meshBlob.length === "number" || $util.isString(message.meshBlob))) return "meshBlob: buffer expected"; if (message.textureBlob != null && message.hasOwnProperty("textureBlob")) if (!(message.textureBlob && typeof message.textureBlob.length === "number" || $util.isString(message.textureBlob))) return "textureBlob: buffer expected"; return null; }; /** * Creates a ARModelData message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof ARModelData * @static * @param {Object.} object Plain object * @returns {ARModelData} ARModelData */ ARModelData.fromObject = function fromObject(object) { if (object instanceof $root.ARModelData) return object; var message = new $root.ARModelData(); if (object.meshModel != null) if (typeof object.meshModel === "string") $util.base64.decode(object.meshModel, message.meshModel = $util.newBuffer($util.base64.length(object.meshModel)), 0); else if (object.meshModel.length) message.meshModel = object.meshModel; if (object.textureModel != null) if (typeof object.textureModel === "string") $util.base64.decode(object.textureModel, message.textureModel = $util.newBuffer($util.base64.length(object.textureModel)), 0); else if (object.textureModel.length) message.textureModel = object.textureModel; if (object.preview != null) if (typeof object.preview === "string") $util.base64.decode(object.preview, message.preview = $util.newBuffer($util.base64.length(object.preview)), 0); else if (object.preview.length) message.preview = object.preview; if (object.meshBlob != null) if (typeof object.meshBlob === "string") $util.base64.decode(object.meshBlob, message.meshBlob = $util.newBuffer($util.base64.length(object.meshBlob)), 0); else if (object.meshBlob.length) message.meshBlob = object.meshBlob; if (object.textureBlob != null) if (typeof object.textureBlob === "string") $util.base64.decode(object.textureBlob, message.textureBlob = $util.newBuffer($util.base64.length(object.textureBlob)), 0); else if (object.textureBlob.length) message.textureBlob = object.textureBlob; return message; }; /** * Creates a plain object from a ARModelData message. Also converts values to other types if specified. * @function toObject * @memberof ARModelData * @static * @param {ARModelData} message ARModelData * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ ARModelData.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { if (options.bytes === String) object.meshModel = ""; else { object.meshModel = []; if (options.bytes !== Array) object.meshModel = $util.newBuffer(object.meshModel); } if (options.bytes === String) object.textureModel = ""; else { object.textureModel = []; if (options.bytes !== Array) object.textureModel = $util.newBuffer(object.textureModel); } if (options.bytes === String) object.preview = ""; else { object.preview = []; if (options.bytes !== Array) object.preview = $util.newBuffer(object.preview); } if (options.bytes === String) object.meshBlob = ""; else { object.meshBlob = []; if (options.bytes !== Array) object.meshBlob = $util.newBuffer(object.meshBlob); } if (options.bytes === String) object.textureBlob = ""; else { object.textureBlob = []; if (options.bytes !== Array) object.textureBlob = $util.newBuffer(object.textureBlob); } } if (message.meshModel != null && message.hasOwnProperty("meshModel")) object.meshModel = options.bytes === String ? $util.base64.encode(message.meshModel, 0, message.meshModel.length) : options.bytes === Array ? Array.prototype.slice.call(message.meshModel) : message.meshModel; if (message.textureModel != null && message.hasOwnProperty("textureModel")) object.textureModel = options.bytes === String ? $util.base64.encode(message.textureModel, 0, message.textureModel.length) : options.bytes === Array ? Array.prototype.slice.call(message.textureModel) : message.textureModel; if (message.preview != null && message.hasOwnProperty("preview")) object.preview = options.bytes === String ? $util.base64.encode(message.preview, 0, message.preview.length) : options.bytes === Array ? Array.prototype.slice.call(message.preview) : message.preview; if (message.meshBlob != null && message.hasOwnProperty("meshBlob")) object.meshBlob = options.bytes === String ? $util.base64.encode(message.meshBlob, 0, message.meshBlob.length) : options.bytes === Array ? Array.prototype.slice.call(message.meshBlob) : message.meshBlob; if (message.textureBlob != null && message.hasOwnProperty("textureBlob")) object.textureBlob = options.bytes === String ? $util.base64.encode(message.textureBlob, 0, message.textureBlob.length) : options.bytes === Array ? Array.prototype.slice.call(message.textureBlob) : message.textureBlob; return object; }; /** * Converts this ARModelData to JSON. * @function toJSON * @memberof ARModelData * @instance * @returns {Object.} JSON object */ ARModelData.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return ARModelData; })(); $root.GetARModelReq = (function() { /** * Properties of a GetARModelReq. * @exports IGetARModelReq * @interface IGetARModelReq * @property {number|null} [bizuin] GetARModelReq bizuin * @property {string|null} [cosid] GetARModelReq cosid * @property {number|null} [modelType] GetARModelReq modelType * @property {number|null} [needData] GetARModelReq needData * @property {number|null} [useIntranet] GetARModelReq useIntranet * @property {number|null} [expireTime] GetARModelReq expireTime */ /** * Constructs a new GetARModelReq. * @exports GetARModelReq * @classdesc Represents a GetARModelReq. * @implements IGetARModelReq * @constructor * @param {IGetARModelReq=} [properties] Properties to set */ function GetARModelReq(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * GetARModelReq bizuin. * @member {number} bizuin * @memberof GetARModelReq * @instance */ GetARModelReq.prototype.bizuin = 0; /** * GetARModelReq cosid. * @member {string} cosid * @memberof GetARModelReq * @instance */ GetARModelReq.prototype.cosid = ""; /** * GetARModelReq modelType. * @member {number} modelType * @memberof GetARModelReq * @instance */ GetARModelReq.prototype.modelType = 0; /** * GetARModelReq needData. * @member {number} needData * @memberof GetARModelReq * @instance */ GetARModelReq.prototype.needData = 1; /** * GetARModelReq useIntranet. * @member {number} useIntranet * @memberof GetARModelReq * @instance */ GetARModelReq.prototype.useIntranet = 0; /** * GetARModelReq expireTime. * @member {number} expireTime * @memberof GetARModelReq * @instance */ GetARModelReq.prototype.expireTime = 0; /** * Creates a new GetARModelReq instance using the specified properties. * @function create * @memberof GetARModelReq * @static * @param {IGetARModelReq=} [properties] Properties to set * @returns {GetARModelReq} GetARModelReq instance */ GetARModelReq.create = function create(properties) { return new GetARModelReq(properties); }; /** * Encodes the specified GetARModelReq message. Does not implicitly {@link GetARModelReq.verify|verify} messages. * @function encode * @memberof GetARModelReq * @static * @param {IGetARModelReq} message GetARModelReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GetARModelReq.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.bizuin != null && Object.hasOwnProperty.call(message, "bizuin")) writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.bizuin); if (message.cosid != null && Object.hasOwnProperty.call(message, "cosid")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.cosid); if (message.modelType != null && Object.hasOwnProperty.call(message, "modelType")) writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.modelType); if (message.needData != null && Object.hasOwnProperty.call(message, "needData")) writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.needData); if (message.useIntranet != null && Object.hasOwnProperty.call(message, "useIntranet")) writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.useIntranet); if (message.expireTime != null && Object.hasOwnProperty.call(message, "expireTime")) writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.expireTime); return writer; }; /** * Encodes the specified GetARModelReq message, length delimited. Does not implicitly {@link GetARModelReq.verify|verify} messages. * @function encodeDelimited * @memberof GetARModelReq * @static * @param {IGetARModelReq} message GetARModelReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GetARModelReq.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a GetARModelReq message from the specified reader or buffer. * @function decode * @memberof GetARModelReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {GetARModelReq} GetARModelReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GetARModelReq.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.GetARModelReq(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.bizuin = reader.uint32(); break; case 2: message.cosid = reader.string(); break; case 3: message.modelType = reader.uint32(); break; case 4: message.needData = reader.uint32(); break; case 5: message.useIntranet = reader.uint32(); break; case 6: message.expireTime = reader.uint32(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a GetARModelReq message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof GetARModelReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {GetARModelReq} GetARModelReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GetARModelReq.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a GetARModelReq message. * @function verify * @memberof GetARModelReq * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ GetARModelReq.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.bizuin != null && message.hasOwnProperty("bizuin")) if (!$util.isInteger(message.bizuin)) return "bizuin: integer expected"; if (message.cosid != null && message.hasOwnProperty("cosid")) if (!$util.isString(message.cosid)) return "cosid: string expected"; if (message.modelType != null && message.hasOwnProperty("modelType")) if (!$util.isInteger(message.modelType)) return "modelType: integer expected"; if (message.needData != null && message.hasOwnProperty("needData")) if (!$util.isInteger(message.needData)) return "needData: integer expected"; if (message.useIntranet != null && message.hasOwnProperty("useIntranet")) if (!$util.isInteger(message.useIntranet)) return "useIntranet: integer expected"; if (message.expireTime != null && message.hasOwnProperty("expireTime")) if (!$util.isInteger(message.expireTime)) return "expireTime: integer expected"; return null; }; /** * Creates a GetARModelReq message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof GetARModelReq * @static * @param {Object.} object Plain object * @returns {GetARModelReq} GetARModelReq */ GetARModelReq.fromObject = function fromObject(object) { if (object instanceof $root.GetARModelReq) return object; var message = new $root.GetARModelReq(); if (object.bizuin != null) message.bizuin = object.bizuin >>> 0; if (object.cosid != null) message.cosid = String(object.cosid); if (object.modelType != null) message.modelType = object.modelType >>> 0; if (object.needData != null) message.needData = object.needData >>> 0; if (object.useIntranet != null) message.useIntranet = object.useIntranet >>> 0; if (object.expireTime != null) message.expireTime = object.expireTime >>> 0; return message; }; /** * Creates a plain object from a GetARModelReq message. Also converts values to other types if specified. * @function toObject * @memberof GetARModelReq * @static * @param {GetARModelReq} message GetARModelReq * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ GetARModelReq.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.bizuin = 0; object.cosid = ""; object.modelType = 0; object.needData = 1; object.useIntranet = 0; object.expireTime = 0; } if (message.bizuin != null && message.hasOwnProperty("bizuin")) object.bizuin = message.bizuin; if (message.cosid != null && message.hasOwnProperty("cosid")) object.cosid = message.cosid; if (message.modelType != null && message.hasOwnProperty("modelType")) object.modelType = message.modelType; if (message.needData != null && message.hasOwnProperty("needData")) object.needData = message.needData; if (message.useIntranet != null && message.hasOwnProperty("useIntranet")) object.useIntranet = message.useIntranet; if (message.expireTime != null && message.hasOwnProperty("expireTime")) object.expireTime = message.expireTime; return object; }; /** * Converts this GetARModelReq to JSON. * @function toJSON * @memberof GetARModelReq * @instance * @returns {Object.} JSON object */ GetARModelReq.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return GetARModelReq; })(); $root.GetARModelResp = (function() { /** * Properties of a GetARModelResp. * @exports IGetARModelResp * @interface IGetARModelResp * @property {IARModelData|null} [modelData] GetARModelResp modelData * @property {string|null} [url] GetARModelResp url * @property {string|null} [host] GetARModelResp host * @property {string|null} [errMsg] GetARModelResp errMsg * @property {number|null} [expireTime] GetARModelResp expireTime * @property {number|null} [status] GetARModelResp status */ /** * Constructs a new GetARModelResp. * @exports GetARModelResp * @classdesc Represents a GetARModelResp. * @implements IGetARModelResp * @constructor * @param {IGetARModelResp=} [properties] Properties to set */ function GetARModelResp(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * GetARModelResp modelData. * @member {IARModelData|null|undefined} modelData * @memberof GetARModelResp * @instance */ GetARModelResp.prototype.modelData = null; /** * GetARModelResp url. * @member {string} url * @memberof GetARModelResp * @instance */ GetARModelResp.prototype.url = ""; /** * GetARModelResp host. * @member {string} host * @memberof GetARModelResp * @instance */ GetARModelResp.prototype.host = ""; /** * GetARModelResp errMsg. * @member {string} errMsg * @memberof GetARModelResp * @instance */ GetARModelResp.prototype.errMsg = ""; /** * GetARModelResp expireTime. * @member {number} expireTime * @memberof GetARModelResp * @instance */ GetARModelResp.prototype.expireTime = 0; /** * GetARModelResp status. * @member {number} status * @memberof GetARModelResp * @instance */ GetARModelResp.prototype.status = 0; /** * Creates a new GetARModelResp instance using the specified properties. * @function create * @memberof GetARModelResp * @static * @param {IGetARModelResp=} [properties] Properties to set * @returns {GetARModelResp} GetARModelResp instance */ GetARModelResp.create = function create(properties) { return new GetARModelResp(properties); }; /** * Encodes the specified GetARModelResp message. Does not implicitly {@link GetARModelResp.verify|verify} messages. * @function encode * @memberof GetARModelResp * @static * @param {IGetARModelResp} message GetARModelResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GetARModelResp.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.modelData != null && Object.hasOwnProperty.call(message, "modelData")) $root.ARModelData.encode(message.modelData, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.url != null && Object.hasOwnProperty.call(message, "url")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.url); if (message.host != null && Object.hasOwnProperty.call(message, "host")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.host); if (message.errMsg != null && Object.hasOwnProperty.call(message, "errMsg")) writer.uint32(/* id 4, wireType 2 =*/34).string(message.errMsg); if (message.expireTime != null && Object.hasOwnProperty.call(message, "expireTime")) writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.expireTime); if (message.status != null && Object.hasOwnProperty.call(message, "status")) writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.status); return writer; }; /** * Encodes the specified GetARModelResp message, length delimited. Does not implicitly {@link GetARModelResp.verify|verify} messages. * @function encodeDelimited * @memberof GetARModelResp * @static * @param {IGetARModelResp} message GetARModelResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GetARModelResp.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a GetARModelResp message from the specified reader or buffer. * @function decode * @memberof GetARModelResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {GetARModelResp} GetARModelResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GetARModelResp.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.GetARModelResp(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.modelData = $root.ARModelData.decode(reader, reader.uint32()); break; case 2: message.url = reader.string(); break; case 3: message.host = reader.string(); break; case 4: message.errMsg = reader.string(); break; case 5: message.expireTime = reader.uint32(); break; case 6: message.status = reader.uint32(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a GetARModelResp message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof GetARModelResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {GetARModelResp} GetARModelResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GetARModelResp.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a GetARModelResp message. * @function verify * @memberof GetARModelResp * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ GetARModelResp.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.modelData != null && message.hasOwnProperty("modelData")) { var error = $root.ARModelData.verify(message.modelData); if (error) return "modelData." + error; } if (message.url != null && message.hasOwnProperty("url")) if (!$util.isString(message.url)) return "url: string expected"; if (message.host != null && message.hasOwnProperty("host")) if (!$util.isString(message.host)) return "host: string expected"; if (message.errMsg != null && message.hasOwnProperty("errMsg")) if (!$util.isString(message.errMsg)) return "errMsg: string expected"; if (message.expireTime != null && message.hasOwnProperty("expireTime")) if (!$util.isInteger(message.expireTime)) return "expireTime: integer expected"; if (message.status != null && message.hasOwnProperty("status")) if (!$util.isInteger(message.status)) return "status: integer expected"; return null; }; /** * Creates a GetARModelResp message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof GetARModelResp * @static * @param {Object.} object Plain object * @returns {GetARModelResp} GetARModelResp */ GetARModelResp.fromObject = function fromObject(object) { if (object instanceof $root.GetARModelResp) return object; var message = new $root.GetARModelResp(); if (object.modelData != null) { if (typeof object.modelData !== "object") throw TypeError(".GetARModelResp.modelData: object expected"); message.modelData = $root.ARModelData.fromObject(object.modelData); } if (object.url != null) message.url = String(object.url); if (object.host != null) message.host = String(object.host); if (object.errMsg != null) message.errMsg = String(object.errMsg); if (object.expireTime != null) message.expireTime = object.expireTime >>> 0; if (object.status != null) message.status = object.status >>> 0; return message; }; /** * Creates a plain object from a GetARModelResp message. Also converts values to other types if specified. * @function toObject * @memberof GetARModelResp * @static * @param {GetARModelResp} message GetARModelResp * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ GetARModelResp.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.modelData = null; object.url = ""; object.host = ""; object.errMsg = ""; object.expireTime = 0; object.status = 0; } if (message.modelData != null && message.hasOwnProperty("modelData")) object.modelData = $root.ARModelData.toObject(message.modelData, options); if (message.url != null && message.hasOwnProperty("url")) object.url = message.url; if (message.host != null && message.hasOwnProperty("host")) object.host = message.host; if (message.errMsg != null && message.hasOwnProperty("errMsg")) object.errMsg = message.errMsg; if (message.expireTime != null && message.hasOwnProperty("expireTime")) object.expireTime = message.expireTime; if (message.status != null && message.hasOwnProperty("status")) object.status = message.status; return object; }; /** * Converts this GetARModelResp to JSON. * @function toJSON * @memberof GetARModelResp * @instance * @returns {Object.} JSON object */ GetARModelResp.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return GetARModelResp; })(); module.exports = $root; ================================================ FILE: cloudfunctions/ARDemo/svrkit-utils.static.json ================================================ { "nested": { "enARModelStatus": { "values": { "ARModel_Status_Default": 0, "ARModel_Status_Init": 1, "ARModel_Status_Sparse_Finished": 2, "ARModel_Status_3d_Finished": 3, "ARModel_Status_Object_Finished": 4, "ARModel_Status_Marker_Finished": 5, "ARModel_Status_Fail": 100 } }, "enARAlgorithmType": { "values": { "Algorithm_Type_3D_Object": 1, "Algorithm_Type_3D_Marker": 2 } }, "enARModelType": { "values": { "ARModel_Type_Sparse": 1, "ARModel_Type_3D": 2, "ARModel_Type_Marker": 3 } }, "ModelCos": { "fields": { "modelList": { "rule": "repeated", "type": "ModelCosId", "id": 1 } }, "nested": { "ModelCosId": { "fields": { "modelType": { "type": "enARModelType", "id": 1 }, "modelCosid": { "type": "string", "id": 2 }, "errmsg": { "type": "string", "id": 3 } } } } }, "ARModel": { "options": { "(mmbizintpkv.KvTableTestID)": 916 }, "fields": { "cosid": { "type": "string", "id": 1 }, "bizuin": { "type": "uint32", "id": 2 }, "name": { "type": "string", "id": 3 }, "uploadTime": { "type": "uint32", "id": 4 }, "modelStatus": { "type": "enARModelStatus", "id": 5 }, "algoType": { "type": "enARAlgorithmType", "id": 6 }, "modelCos": { "type": "ModelCos", "id": 7 } } }, "GetARModelListReq": { "fields": { "bizuin": { "type": "uint32", "id": 1 }, "modelStatus": { "type": "uint32", "id": 2 }, "startTime": { "type": "uint32", "id": 3 }, "endTime": { "type": "uint32", "id": 4 }, "offset": { "type": "uint32", "id": 5 }, "limit": { "type": "uint32", "id": 6 }, "algoType": { "type": "uint32", "id": 7 } } }, "GetARModelListResp": { "fields": { "modelList": { "rule": "repeated", "type": "ARModel", "id": 1 } } }, "GenerateARModelReq": { "fields": { "bizuin": { "type": "uint32", "id": 1 }, "name": { "type": "string", "id": 2 }, "buffer": { "type": "bytes", "id": 3 }, "url": { "type": "string", "id": 4 }, "algoType": { "type": "enARAlgorithmType", "id": 5 }, "lod": { "type": "uint32", "id": 6, "options": { "default": 0 } }, "getmesh": { "type": "bool", "id": 7, "options": { "default": false } }, "gettexture": { "type": "bool", "id": 8, "options": { "default": false } } } }, "GenerateARModelResp": { "fields": { "url": { "type": "string", "id": 1 }, "host": { "type": "string", "id": 2 }, "cosid": { "type": "string", "id": 3 }, "lod": { "type": "uint32", "id": 4, "options": { "default": 0 } }, "getmesh": { "type": "bool", "id": 5, "options": { "default": false } }, "gettexture": { "type": "bool", "id": 6, "options": { "default": false } } } }, "ARModelData": { "fields": { "meshModel": { "type": "bytes", "id": 1 }, "textureModel": { "type": "bytes", "id": 2 }, "preview": { "type": "bytes", "id": 3 }, "meshBlob": { "type": "bytes", "id": 4 }, "textureBlob": { "type": "bytes", "id": 5 } } }, "GetARModelReq": { "fields": { "bizuin": { "type": "uint32", "id": 1 }, "cosid": { "type": "string", "id": 2 }, "modelType": { "type": "uint32", "id": 3 }, "needData": { "type": "uint32", "id": 4, "options": { "default": 1 } }, "useIntranet": { "type": "uint32", "id": 5, "options": { "default": 0 } }, "expireTime": { "type": "uint32", "id": 6 } } }, "GetARModelResp": { "fields": { "modelData": { "type": "ARModelData", "id": 1 }, "url": { "type": "string", "id": 2 }, "host": { "type": "string", "id": 3 }, "errMsg": { "type": "string", "id": 4 }, "expireTime": { "type": "uint32", "id": 5 }, "status": { "type": "uint32", "id": 6 } } } } } ================================================ FILE: cloudfunctions/ARDemo/svrkit.config.js ================================================ // 模块导出一个数组,每个元素是一个模块配置项 module.exports = [ { // 模块对应的 proto 文件相对于该文件的路径 proto: './proto/mmbizwxaintparDemo.proto', // 模块 service name serviceName: 'Mmbizwxaintpar', // 模块 magic 数字 magic: 11081, // 模块导出的接口方法 functions: { // 接口名字及其对应的接口调用信息 GenerateARModel: { // 接口的 cmdid cmdid: 1, // 接口的 request 对应的 protobuf message 名字,需在 proto 文件中定义 req: 'GenerateARModelReq', // 接口的 response 对应的 protobuf message 名字,需在 proto 文件中定义 res: 'GenerateARModelResp', }, // 接口的名字及其对应的接口调用信息 GetARModelList: { cmdid: 3, req: 'GetARModelListReq', res: 'GetARModelListResp', }, GetARModel: { cmdid: 4, req: 'GetARModelReq', res: 'GetARModelResp', } } } ] ================================================ FILE: cloudfunctions/ARDemo/wx-server-sdk-wxg-service/CHANGELOG.md ================================================ ## 0.6.0 1. `A` 新增 `callWXSvrkit` 支持传入 `headuin` 和 `routeMethod` ## 0.2.0 1. `A` 新增 `callTencentInnerAPI` 内部接口 ## 0.1.0 1. `A` 新增 `callWXSvrkit` 内部接口 2. `A` 新增 `callWXInnerAPI` 内部接口 ================================================ FILE: cloudfunctions/ARDemo/wx-server-sdk-wxg-service/LICENSE ================================================ MIT License Copyright (c) 2018 wechat-miniprogram 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. ================================================ FILE: cloudfunctions/ARDemo/wx-server-sdk-wxg-service/index.js ================================================ module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = "./src/api/inner/index.ts"); /******/ }) /************************************************************************/ /******/ ({ /***/ "./src/api/inner/api/api.ts": /*!**********************************!*\ !*** ./src/api/inner/api/api.ts ***! \**********************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAPIs = void 0; const callWXInnerAPI_1 = __webpack_require__(/*! ./callWXInnerAPI */ "./src/api/inner/api/callWXInnerAPI.ts"); const callWXSvrkit_1 = __webpack_require__(/*! ./callWXSvrkit */ "./src/api/inner/api/callWXSvrkit.ts"); const callSvrkit_1 = __webpack_require__(/*! ./callSvrkit */ "./src/api/inner/api/callSvrkit.ts"); const callTencentInnerAPI_1 = __webpack_require__(/*! ./callTencentInnerAPI */ "./src/api/inner/api/callTencentInnerAPI.ts"); function getAPIs(cloud) { return { callWXInnerAPI: callWXInnerAPI_1.default(cloud), callWXSvrkit: callWXSvrkit_1.default(cloud), callSvrkit: callSvrkit_1.default(cloud), callTencentInnerAPI: callTencentInnerAPI_1.default(cloud), }; } exports.getAPIs = getAPIs; /***/ }), /***/ "./src/api/inner/api/callSvrkit.ts": /*!*****************************************!*\ !*** ./src/api/inner/api/callSvrkit.ts ***! \*****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; // @deprecated kainniu api Object.defineProperty(exports, "__esModule", { value: true }); const error_1 = __webpack_require__(/*! utils/error */ "./src/utils/error.ts"); const msg_1 = __webpack_require__(/*! utils/msg */ "./src/utils/msg.ts"); const openapi_1 = __webpack_require__(/*! ../../../protobuf/openapi */ "./src/protobuf/openapi.js"); const error_config_1 = __webpack_require__(/*! config/error.config */ "./src/config/error.config.ts"); const API_NAME = 'callSvrkit'; function getCallSvrkit(cloud) { return function callSvrkit(options) { return new Promise(async (resolve, reject) => { if (!options) { return reject(error_1.returnAsFinalCloudSDKError({ errMsg: 'Params for callSvrkit must be an object instead of ' + typeof options, }, API_NAME)); } try { if (!options.pbInstance) { throw new Error('pbInstance must be provided'); } } catch (e) { return reject(error_1.returnAsFinalCloudSDKError(e, API_NAME)); } try { const svrkitData = { apiName: options.pbInstance.data.apiName, reqData: options.pbInstance.data.reqBodyBuffer, }; const pbMessage = openapi_1.CommApiData.encode({ apiType: openapi_1.CommApiData.ApiType.SVRKIT_API, svrkitData, }).finish(); const wxResp = await cloud.provider.api.callWXOpenAPI({ api: API_NAME, data: Buffer.from(pbMessage), }, { instance: cloud.instance, }); let svrkitResponse; let svrkitResponseBuffer; let svrkitErrCode = 0; if (wxResp) { if (wxResp.errorCode) { // wx system error, for example: no permission throw new error_1.CloudSDKError({ errCode: error_config_1.ERR_CODE[error_config_1.ERR_CODE[wxResp.errorCode]] || wxResp.errorCode, errMsg: `${error_config_1.ERR_CODE[error_config_1.ERR_CODE.WX_SYSTEM_ERROR]}: error code: ${wxResp.errorCode}` }); } else { svrkitErrCode = wxResp.svrkitErrorCode; if (wxResp.svrkitErrorCode !== 0) { throw { errCode: error_config_1.ERR_CODE.WX_SYSTEM_ERROR, errMsg: `internal svrkit error, code ${wxResp.svrkitErrorCode}`, }; } if (!wxResp.respData) { throw { errCode: error_config_1.ERR_CODE.WX_SYSTEM_ERROR, errMsg: `internal svrkit error, empty respData`, }; } svrkitResponseBuffer = wxResp.respData; const pbRespMsg = options.pbInstance.resProto.decode(wxResp.respData); if (options.convertResp && options.convertResp.bytes === false) { if (!options.pbInstance.resProto) { throw new Error('please ensure \'pbInstance\' is generated using @tencent/cloud-functions-tools whose version is greater or equal to 1.3.0'); } svrkitResponse = options.pbInstance.resProto.toObject(pbRespMsg, { long: String }); } else { svrkitResponse = pbRespMsg.toJSON(); } } } resolve({ svrkitErrCode, svrkitResponse, svrkitResponseBuffer, errMsg: msg_1.apiSuccessMsg(API_NAME), errCode: 0, }); } catch (e) { const error = error_1.returnAsFinalCloudSDKError(e, API_NAME); return reject(error); } }); }; } exports.default = getCallSvrkit; /***/ }), /***/ "./src/api/inner/api/callTencentInnerAPI.ts": /*!**************************************************!*\ !*** ./src/api/inner/api/callTencentInnerAPI.ts ***! \**************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const assert_1 = __webpack_require__(/*! utils/assert */ "./src/utils/assert.ts"); const error_1 = __webpack_require__(/*! utils/error */ "./src/utils/error.ts"); const msg_1 = __webpack_require__(/*! utils/msg */ "./src/utils/msg.ts"); const openapi_1 = __webpack_require__(/*! ../../../protobuf/openapi */ "./src/protobuf/openapi.js"); const error_config_1 = __webpack_require__(/*! config/error.config */ "./src/config/error.config.ts"); const utils_1 = __webpack_require__(/*! utils/utils */ "./src/utils/utils.ts"); const getHTTPMethodNumber = (method) => { switch (method.toLowerCase()) { case 'get': { return openapi_1.HTTP_METHODS.HTTP_GET; } case 'post': { return openapi_1.HTTP_METHODS.HTTP_POST; } case 'put': { return openapi_1.HTTP_METHODS.HTTP_PUT; } case 'patch': { return openapi_1.HTTP_METHODS.HTTP_PATCH; } case 'head': { return openapi_1.HTTP_METHODS.HTTP_HEAD; } case 'delete': { return openapi_1.HTTP_METHODS.HTTP_DELETE; } default: { throw new Error(`unsupported HTTP method ${method}`); } } }; const API_NAME = 'callTencentInnerAPI'; function getCallTencentInnerAPI(cloud) { return function callTencentInnerAPI(options) { const apiName = 'callTencentInnerAPI'; return new Promise(async (resolve, reject) => { if (!options) { return reject(error_1.returnAsFinalCloudSDKError({ errMsg: 'Params for callTencentInnerAPI must be an object instead of ' + typeof options, }, apiName)); } try { assert_1.assertType(options, { modid: 'number', cmdid: 'number', path: 'string', method: 'string', }); if (options.headers) { assert_1.assertType(options, { headers: 'object', }); } } catch (e) { return reject(error_1.returnAsFinalCloudSDKError(e, apiName)); } try { const innerData = { modid: options.modid, cmdid: options.cmdid, url: options.path, method: getHTTPMethodNumber(options.method), useHttps: options.https, headers: [], }; if (options.headers) { for (const key in options.headers) { innerData.headers.push(`${key.toLowerCase()}: ${options.headers[key]}`); } } if (options.body) { // @ts-ignore innerData.body = Buffer.from(options.body); } const pbMessage = openapi_1.CommApiData.encode({ apiType: openapi_1.CommApiData.ApiType.INNER_API, innerData, }).finish(); const wxResp = await cloud.provider.api.callWXOpenAPI({ api: API_NAME, data: Buffer.from(pbMessage), }, { // this is the new protocol instance: cloud.instance, // @deprecated // the following 2 lines are deprecated, for compatibility only // to be deleted. defaultConfig: utils_1.getServiceConfigFromDefaultConfig(cloud.config), apiConfig: options.config, // @ts-ignore version: options.apiVersion || 'v2', }); let body; let contentType = ''; let statusCode; let rawHeaders = []; let err; if (wxResp) { if (options.autoParse) { if (/application\/json/.test(wxResp.contentType)) { // json response try { body = JSON.parse(wxResp.respData.toString()); } catch (parseWXRespJSONError) { // wx server says it's a json but instead it is not a valid json throw new error_1.CloudSDKError({ errCode: error_config_1.ERR_CODE.WX_SYSTEM_ERROR, errMsg: msg_1.apiFailMsg(API_NAME, `response body is not a valid json: ${wxResp.respData.toString()}`) }); } } else if (/text\/plain/.test(wxResp.contentType)) { // text response body = wxResp.respData.toString(); } } if (!body) { // buffer body body = wxResp.respData; } if (wxResp.contentType) { contentType = wxResp.contentType.trim(); } if (wxResp.httpCode) { statusCode = wxResp.httpCode; } if (wxResp.headers) { // @ts-ignore rawHeaders = wxResp.headers; } } else { throw { errCode: error_config_1.ERR_CODE.WX_SYSTEM_ERROR, errMsg: `internal server error, empty resp buffer`, }; } if (err) { reject(err); return; } resolve({ body, contentType, statusCode, rawHeaders, errMsg: msg_1.apiSuccessMsg(API_NAME), errCode: 0, }); } catch (e) { const error = error_1.returnAsFinalCloudSDKError(e, apiName); return reject(error); } }); }; } exports.default = getCallTencentInnerAPI; /***/ }), /***/ "./src/api/inner/api/callWXInnerAPI.ts": /*!*********************************************!*\ !*** ./src/api/inner/api/callWXInnerAPI.ts ***! \*********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const assert_1 = __webpack_require__(/*! utils/assert */ "./src/utils/assert.ts"); const error_1 = __webpack_require__(/*! utils/error */ "./src/utils/error.ts"); const msg_1 = __webpack_require__(/*! utils/msg */ "./src/utils/msg.ts"); function getCallWXInnerAPI(cloud) { return function callWXInnerAPI(options) { const apiName = 'callWXInnerAPI'; return new Promise(async (resolve, reject) => { if (!options) { return reject(error_1.returnAsFinalCloudSDKError({ errMsg: 'Params for callWXInnerAPI must be an object instead of ' + typeof options, }, apiName)); } try { assert_1.assertType(options, { cmdid: 'number' }); } catch (e) { return reject(error_1.returnAsFinalCloudSDKError(e, apiName)); } try { const result = await cloud.getAPIs().callOpenAPI({ api: '/inner/wxtransfer', data: { cmdid: options.cmdid, req_data: JSON.stringify(options.data || {}), }, config: options.config, }); let parsedResult = result.result; try { if (typeof parsedResult === 'string') { parsedResult = JSON.parse(parsedResult); } } catch (_) { // no nothing } return resolve({ result: parsedResult, errMsg: msg_1.apiSuccessMsg(apiName), }); } catch (e) { const error = error_1.returnAsFinalCloudSDKError(e, apiName); return reject(error); } }); }; } exports.default = getCallWXInnerAPI; /***/ }), /***/ "./src/api/inner/api/callWXSvrkit.ts": /*!*******************************************!*\ !*** ./src/api/inner/api/callWXSvrkit.ts ***! \*******************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const assert_1 = __webpack_require__(/*! utils/assert */ "./src/utils/assert.ts"); const error_1 = __webpack_require__(/*! utils/error */ "./src/utils/error.ts"); const msg_1 = __webpack_require__(/*! utils/msg */ "./src/utils/msg.ts"); function getCallWXSvrkit(cloud) { return function callWXSvrkit(options) { const apiName = 'callWXSvrkit'; return new Promise(async (resolve, reject) => { if (!options) { return reject(error_1.returnAsFinalCloudSDKError({ errMsg: 'Params for callWXSvrkit must be an object instead of ' + typeof options, }, apiName)); } const pbInstance = options.pbInstance; if (pbInstance) { options = Object.assign(Object.assign({}, options), pbInstance.data); delete options.pbInstance; } try { assert_1.assertType(options, { serviceName: 'string', funcName: 'string', magic: 'number', cmdid: 'number', }); } catch (e) { return reject(error_1.returnAsFinalCloudSDKError(e, apiName)); } try { const result = await cloud.getAPIs().callOpenAPI({ api: '/inner/svrkitclientcall', data: { req_body_buffer: options.reqBodyBuffer.toString('base64'), service_name: options.serviceName, func_name: options.funcName, magic: options.magic, cmdid: options.cmdid, headuin: options.headuin, route_method: options.routeMethod, idc_route_method: options.idcRouteMethod, exist_resp: options.existResp, }, config: options.config, timeout: options.timeout, retryOptions: options.retryOptions, }); // @ts-ignore let parsedResult = result.result; if (parsedResult.baseresponse && parsedResult.baseresponse.errcode !== 0) { parsedResult.ret = parsedResult.baseresponse.errcode; } if (parsedResult.ret === 0) { parsedResult.respBodyBuffer = Buffer.from(parsedResult.resp_body_buffer, 'base64'); delete parsedResult.resp_body_buffer; if (pbInstance && options.existResp) { const pbRespMsg = pbInstance.decode(parsedResult.respBodyBuffer); if (options.convertResp && options.convertResp.bytes === false) { if (!pbInstance.resProto) { throw new Error('please ensure \'pbInstance\' is generated using @tencent/cloud-functions-tools whose version is greater or equal to 1.3.0'); } parsedResult.respBody = pbInstance.resProto.toObject(pbRespMsg, { long: String }); } else { parsedResult.respBody = pbRespMsg.toJSON(); } } } const returnValue = { ret: parsedResult.ret, result: parsedResult.result, respBodyBuffer: parsedResult.respBodyBuffer, respBody: parsedResult.respBody, errMsg: msg_1.apiSuccessMsg(apiName), }; resolve(returnValue); } catch (e) { const error = error_1.returnAsFinalCloudSDKError(e, apiName); return reject(error); } }); }; } exports.default = getCallWXSvrkit; /***/ }), /***/ "./src/api/inner/index.ts": /*!********************************!*\ !*** ./src/api/inner/index.ts ***! \********************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createService = exports.SERVICE_NAME = void 0; const api_1 = __webpack_require__(/*! ./api/api */ "./src/api/inner/api/api.ts"); exports.SERVICE_NAME = 'inner'; function createService(cloud) { return { name: exports.SERVICE_NAME, getAPIs: api_1.getAPIs.bind(null, cloud), }; } exports.createService = createService; exports.default = createService; /***/ }), /***/ "./src/api/utils/api/signature.ts": /*!****************************************!*\ !*** ./src/api/utils/api/signature.ts ***! \****************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MidasSignature = exports.signature = void 0; const crypto = __webpack_require__(/*! crypto */ "crypto"); const utils_1 = __webpack_require__(/*! utils/utils */ "./src/utils/utils.ts"); function signature(options) { switch (options.type) { case 'midas': { return new MidasSignature(options); } } } exports.signature = signature; class MidasSignature { constructor(options) { this.type = 'midas'; if (!options.params || !Array.isArray(options.params)) { throw new Error('options.params must be a string array'); } if (!options.secret) { throw new Error('options.secret must be provided'); } this.params = options.params; this.secret = options.secret; } compute(cgiPath, method, secret, paramValues) { // sort params by ascii const paramNames = [...this.params].sort().map(name => utils_1.convertCase(name, { from: 'camelcase', to: 'snakecase', })); // get params string const paramStr = paramNames.map(paramName => { if (!paramValues.hasOwnProperty(paramName)) { throw new Error(`Cannot compute signature: lack of param '${paramName}'`); } return `${paramName}=${paramValues[paramName]}`; }).join('&'); // concatenate params string, cgi path, and midas secret const signSource = paramStr + `&org_loc=${cgiPath}&method=${method}&secret=${secret}`; // sign const signature = crypto.createHmac('sha256', secret).update(signSource).digest('hex'); return signature; } } exports.MidasSignature = MidasSignature; exports.default = signature; /***/ }), /***/ "./src/config/error.config.ts": /*!************************************!*\ !*** ./src/config/error.config.ts ***! \************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TCB_ERR_CODE = exports.ERR_CODE = void 0; exports.ERR_CODE = { '-1': 'unknown error', UNKNOWN_ERROR: -1, // 以 6 开始的是由微信服务器侧产生的错误码 // 以 5 开始的是由腾讯云侧产生的错误码 // 以 4 开始的是本地 SDK 产生的错误 // 接下来两位表示具体业务类型:01通用,02数据库,03文件,04云函数 // 最后三位表示具体的错误 // 小程序 SDK 云函数 '-404001': 'empty call result', SDK_FUNCTIONS_EMPTY_CALL_RESULT: -404001, '-404002': 'empty event id', SDK_FUNCTIONS_EMPTY_EVENT_ID: -404002, '-404003': 'empty poll url', SDK_FUNCTIONS_EMPTY_POLL_URL: -404003, '-404004': 'empty poll result json', SDK_FUNCTIONS_EMPTY_POLL_RESULT_JSON: -404004, '-404005': 'exceed max poll retry', SDK_FUNCTIONS_EXCEED_MAX_POLL_RETRY: -404005, '-404006': 'empty poll result base resp', SDK_FUNCTIONS_EMPTY_POLL_RESULT_BASE_RESP: -404006, '-404007': 'error while polling for the result, poll result base resp ret %s', SDK_FUNCTIONS_POLL_RESULT_BASE_RESP_RET_ABNORMAL: -404007, '-404008': 'error while polling for the result, polling server return a status code of %s', SDK_FUNCTIONS_POLL_RESULT_STATUS_CODE_ERROR: -404008, '-404009': 'error while polling for the result: %s', SDK_FUNCTIONS_POLL_ERROR: -404009, // 微信服务器 '-601001': 'system error', WX_SYSTEM_ERROR: -601001, '-601002': 'system args error', WX_SYSTEM_ARGS_ERROR: -601002, '-601003': 'system network error', WX_SYSTEM_NETWORK_ERROR: -601003, '-601004': 'api permission denied', WX_API_PERMISSION_DENIED: -601004, '-601005': 'invalid cloudID', WX_INVALID_CLOUDID: -601005, '-601006': 'cloudID expired', WX_CLOUDID_EXPIRED: -601006, '-601007': 'cloudID and calling user does not match', WX_CLOUDID_USER_NOT_MATCH: -601007, '-601008': 'server-side request timedout', WX_SERVER_REQUEST_TIMEOUT: -601008, '-601009': 'missing mobile phone', WX_MISSING_MOBILE_PHONE: -601009, '-601010': 'no write permission', WX_NO_WRITE_PERMISSION: -601010, '-601011': 'no privilege permission', WX_NO_PRIVILEGE_PERMISSION: -601011, '-601012': 'unauthorized env', WX_UNAUTHORIZED_ENV: -601012, '-601013': 'no multiend permission', WX_NO_MULTIEND_PERMISSION: -601013, '-601015': 'access denied (cloudfunction cloudbase_auth returns empty errCode)', WX_CLOUDBASE_AUTH_RETURN_EMPTY_ERRCODE: -601015, '-601016': 'missing env auth info', WX_MISSING_ENV_AUTH_INFO: -601016, '-601017': 'access denied (cloudbase_auth returns non-zero errCode)', WX_CLOUDBASE_AUTH_RETURN_NON_ZERO_ERRCODE: -601017, '-602018': 'unauthorized API', WX_UNAUTHORIZED_API: -601018, '-602001': 'database query result size exceed limit (1MB)', WX_DATABASE_QUERY_SIZE_EXCEED_LIMIT: -602001, '-604001': 'cloudfunction result size exceed limit (1MB)', WX_CLOUDFUNCTION_RESULT_SIZE_EXCEED_LIMIT: -604001, '-604100': 'API not found', WX_FUNCTIONS_SERVER_OPENAPI_NOT_FOUND: -604100, '-604101': 'function has no permission to call this API', WX_FUNCTIONS_SERVER_OPENAPI_NO_PERMISSION: -604101, '-604102': 'call open API timeout', WX_FUNCTIONS_SERVER_OPENAPI_TIMEOUT: -604102, '-604103': 'call open API system error', WX_FUNCTIONS_SERVER_OPENAPI_SYSTEM_ERROR: -604103, '-604104': 'illegal source of invocation', WX_FUNCTIONS_SERVER_OPENAPI_ILLEGAL_INVOCATION_SOURCE: -604104, // 腾讯云通用 '-501001': 'resource system error', TCB_RESOURCE_SYSTEM_ERROR: -501001, '-501002': 'resource server timeout', TCB_RESOURCE_SERVER_TIMEOUT: -501002, '-501003': 'exceed request limit', TCB_EXCEED_REQUEST_LIMIT: -501003, '-501004': 'exceed concurrent request limit', TCB_EXCEED_CONCURRENT_REQUEST_LIMIT: -501004, '-501005': 'invalid env', TCB_INVALID_ENV: -501005, '-501006': 'invalid common parameters', TCB_INVALID_COMMON_PARAM: -501006, '-501007': 'invalid parameters', TCB_INVALID_PARAM: -501007, '-501008': 'invalid request source', TCB_INVALID_REQUEST_SOURCE: -501008, '-501009': 'resource not initialized', TCB_RESOURCE_NOT_INITIALIZED: -501009, // 腾讯云数据库 '-502001': 'database request fail', TCB_DB_REQUEST_FAIL: -502001, '-502002': 'database invalid command', TCB_DB_INVALID_COMMAND: -502002, '-502003': 'database permission denied', TCB_DB_PERMISSION_DENIED: -502003, '-502004': 'database exceed collection limit', TCB_DB_EXCEED_COLLECTION_LIMIT: -502004, '-502005': 'database collection not exists', TCB_DB_COLLECTION_NOT_EXISTS: -502005, // 腾讯云文件管理 '-503001': 'storage request fail', TCB_STORAGE_REQUEST_FAIL: -503001, '-503002': 'storage permission denied', TCB_STORAGE_PERMISSION_DENIED: -503002, '-503003': 'storage file not exists', TCB_STORAGE_FILE_NOT_EXISTS: -503003, '-503004': 'storage invalid sign parameter', TCB_STORAGE_INVALID_SIGN_PARAM: -503004, // 腾讯云云函数 '-504001': 'functions request fail', TCB_FUNCTIONS_REQUEST_FAIL: -504001, '-504002': 'functions execute fail', TCB_FUNCTIONS_EXEC_FAIL: -504002, }; exports.TCB_ERR_CODE = { // 通用 SUCCESS: 0, SYS_ERR: -501001, SERVER_TIMEOUT: -501002, EXCEED_REQUEST_LIMIT: -501003, EXCEED_CONCURRENT_REQUEST_LIMIT: -501004, INVALIID_ENV: -501005, INVALID_COMMON_PARAM: -501006, INVALID_PARAM: -501007, INVALID_REQUEST_SOURCE: -501008, RESOURCE_NOT_INITIAL: -501009, // 数据库 DATABASE_REQUEST_FAILED: -502001, DATABASE_INVALID_OPERRATOR: -502002, DATABASE_PERMISSION_DENIED: -502003, DATABASE_COLLECTION_EXCEED_LIMIT: -502004, DATABASE_COLLECTION_NOT_EXIST: -502005, // 文件 STORAGE_REQUEST_FAIL: -503001, STORAGE_EXCEED_AUTHORITY: -503002, STORAGE_FILE_NONEXIST: -503003, STORAGE_SIGN_PARAM_INVALID: -503004, // 云函数 FUNCTIONS_REQUEST_FAIL: -504001, FUNCTIONS_EXECUTE_FAIL: -504002, }; /***/ }), /***/ "./src/protobuf/openapi.js": /*!*********************************!*\ !*** ./src/protobuf/openapi.js ***! \*********************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/ var $protobuf = __webpack_require__(/*! protobufjs/minimal */ "protobufjs/minimal"); // Common aliases var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util; // Exported root namespace var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {}); $root.KeyValuePair = (function() { /** * Properties of a KeyValuePair. * @exports IKeyValuePair * @interface IKeyValuePair * @property {string|null} [key] KeyValuePair key * @property {Uint8Array|null} [value] KeyValuePair value * @property {string|null} [contenttype] KeyValuePair contenttype * @property {string|null} [filename] KeyValuePair filename */ /** * Constructs a new KeyValuePair. * @exports KeyValuePair * @classdesc Represents a KeyValuePair. * @implements IKeyValuePair * @constructor * @param {IKeyValuePair=} [properties] Properties to set */ function KeyValuePair(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * KeyValuePair key. * @member {string} key * @memberof KeyValuePair * @instance */ KeyValuePair.prototype.key = ""; /** * KeyValuePair value. * @member {Uint8Array} value * @memberof KeyValuePair * @instance */ KeyValuePair.prototype.value = $util.newBuffer([]); /** * KeyValuePair contenttype. * @member {string} contenttype * @memberof KeyValuePair * @instance */ KeyValuePair.prototype.contenttype = ""; /** * KeyValuePair filename. * @member {string} filename * @memberof KeyValuePair * @instance */ KeyValuePair.prototype.filename = ""; /** * Creates a new KeyValuePair instance using the specified properties. * @function create * @memberof KeyValuePair * @static * @param {IKeyValuePair=} [properties] Properties to set * @returns {KeyValuePair} KeyValuePair instance */ KeyValuePair.create = function create(properties) { return new KeyValuePair(properties); }; /** * Encodes the specified KeyValuePair message. Does not implicitly {@link KeyValuePair.verify|verify} messages. * @function encode * @memberof KeyValuePair * @static * @param {IKeyValuePair} message KeyValuePair message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ KeyValuePair.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.key != null && message.hasOwnProperty("key")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.key); if (message.value != null && message.hasOwnProperty("value")) writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.value); if (message.contenttype != null && message.hasOwnProperty("contenttype")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.contenttype); if (message.filename != null && message.hasOwnProperty("filename")) writer.uint32(/* id 4, wireType 2 =*/34).string(message.filename); return writer; }; /** * Encodes the specified KeyValuePair message, length delimited. Does not implicitly {@link KeyValuePair.verify|verify} messages. * @function encodeDelimited * @memberof KeyValuePair * @static * @param {IKeyValuePair} message KeyValuePair message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ KeyValuePair.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a KeyValuePair message from the specified reader or buffer. * @function decode * @memberof KeyValuePair * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {KeyValuePair} KeyValuePair * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ KeyValuePair.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.KeyValuePair(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.key = reader.string(); break; case 2: message.value = reader.bytes(); break; case 3: message.contenttype = reader.string(); break; case 4: message.filename = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a KeyValuePair message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof KeyValuePair * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {KeyValuePair} KeyValuePair * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ KeyValuePair.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a KeyValuePair message. * @function verify * @memberof KeyValuePair * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ KeyValuePair.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.key != null && message.hasOwnProperty("key")) if (!$util.isString(message.key)) return "key: string expected"; if (message.value != null && message.hasOwnProperty("value")) if (!(message.value && typeof message.value.length === "number" || $util.isString(message.value))) return "value: buffer expected"; if (message.contenttype != null && message.hasOwnProperty("contenttype")) if (!$util.isString(message.contenttype)) return "contenttype: string expected"; if (message.filename != null && message.hasOwnProperty("filename")) if (!$util.isString(message.filename)) return "filename: string expected"; return null; }; /** * Creates a KeyValuePair message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof KeyValuePair * @static * @param {Object.} object Plain object * @returns {KeyValuePair} KeyValuePair */ KeyValuePair.fromObject = function fromObject(object) { if (object instanceof $root.KeyValuePair) return object; var message = new $root.KeyValuePair(); if (object.key != null) message.key = String(object.key); if (object.value != null) if (typeof object.value === "string") $util.base64.decode(object.value, message.value = $util.newBuffer($util.base64.length(object.value)), 0); else if (object.value.length) message.value = object.value; if (object.contenttype != null) message.contenttype = String(object.contenttype); if (object.filename != null) message.filename = String(object.filename); return message; }; /** * Creates a plain object from a KeyValuePair message. Also converts values to other types if specified. * @function toObject * @memberof KeyValuePair * @static * @param {KeyValuePair} message KeyValuePair * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ KeyValuePair.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.key = ""; if (options.bytes === String) object.value = ""; else { object.value = []; if (options.bytes !== Array) object.value = $util.newBuffer(object.value); } object.contenttype = ""; object.filename = ""; } if (message.key != null && message.hasOwnProperty("key")) object.key = message.key; if (message.value != null && message.hasOwnProperty("value")) object.value = options.bytes === String ? $util.base64.encode(message.value, 0, message.value.length) : options.bytes === Array ? Array.prototype.slice.call(message.value) : message.value; if (message.contenttype != null && message.hasOwnProperty("contenttype")) object.contenttype = message.contenttype; if (message.filename != null && message.hasOwnProperty("filename")) object.filename = message.filename; return object; }; /** * Converts this KeyValuePair to JSON. * @function toJSON * @memberof KeyValuePair * @instance * @returns {Object.} JSON object */ KeyValuePair.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return KeyValuePair; })(); $root.OpenApiData = (function() { /** * Properties of an OpenApiData. * @exports IOpenApiData * @interface IOpenApiData * @property {Array.|null} [pairs] OpenApiData pairs */ /** * Constructs a new OpenApiData. * @exports OpenApiData * @classdesc Represents an OpenApiData. * @implements IOpenApiData * @constructor * @param {IOpenApiData=} [properties] Properties to set */ function OpenApiData(properties) { this.pairs = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * OpenApiData pairs. * @member {Array.} pairs * @memberof OpenApiData * @instance */ OpenApiData.prototype.pairs = $util.emptyArray; /** * Creates a new OpenApiData instance using the specified properties. * @function create * @memberof OpenApiData * @static * @param {IOpenApiData=} [properties] Properties to set * @returns {OpenApiData} OpenApiData instance */ OpenApiData.create = function create(properties) { return new OpenApiData(properties); }; /** * Encodes the specified OpenApiData message. Does not implicitly {@link OpenApiData.verify|verify} messages. * @function encode * @memberof OpenApiData * @static * @param {IOpenApiData} message OpenApiData message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ OpenApiData.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.pairs != null && message.pairs.length) for (var i = 0; i < message.pairs.length; ++i) $root.KeyValuePair.encode(message.pairs[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** * Encodes the specified OpenApiData message, length delimited. Does not implicitly {@link OpenApiData.verify|verify} messages. * @function encodeDelimited * @memberof OpenApiData * @static * @param {IOpenApiData} message OpenApiData message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ OpenApiData.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes an OpenApiData message from the specified reader or buffer. * @function decode * @memberof OpenApiData * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {OpenApiData} OpenApiData * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ OpenApiData.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.OpenApiData(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: if (!(message.pairs && message.pairs.length)) message.pairs = []; message.pairs.push($root.KeyValuePair.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes an OpenApiData message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof OpenApiData * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {OpenApiData} OpenApiData * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ OpenApiData.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies an OpenApiData message. * @function verify * @memberof OpenApiData * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ OpenApiData.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.pairs != null && message.hasOwnProperty("pairs")) { if (!Array.isArray(message.pairs)) return "pairs: array expected"; for (var i = 0; i < message.pairs.length; ++i) { var error = $root.KeyValuePair.verify(message.pairs[i]); if (error) return "pairs." + error; } } return null; }; /** * Creates an OpenApiData message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof OpenApiData * @static * @param {Object.} object Plain object * @returns {OpenApiData} OpenApiData */ OpenApiData.fromObject = function fromObject(object) { if (object instanceof $root.OpenApiData) return object; var message = new $root.OpenApiData(); if (object.pairs) { if (!Array.isArray(object.pairs)) throw TypeError(".OpenApiData.pairs: array expected"); message.pairs = []; for (var i = 0; i < object.pairs.length; ++i) { if (typeof object.pairs[i] !== "object") throw TypeError(".OpenApiData.pairs: object expected"); message.pairs[i] = $root.KeyValuePair.fromObject(object.pairs[i]); } } return message; }; /** * Creates a plain object from an OpenApiData message. Also converts values to other types if specified. * @function toObject * @memberof OpenApiData * @static * @param {OpenApiData} message OpenApiData * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ OpenApiData.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.arrays || options.defaults) object.pairs = []; if (message.pairs && message.pairs.length) { object.pairs = []; for (var j = 0; j < message.pairs.length; ++j) object.pairs[j] = $root.KeyValuePair.toObject(message.pairs[j], options); } return object; }; /** * Converts this OpenApiData to JSON. * @function toJSON * @memberof OpenApiData * @instance * @returns {Object.} JSON object */ OpenApiData.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return OpenApiData; })(); $root.TokenApiData = (function() { /** * Properties of a TokenApiData. * @exports ITokenApiData * @interface ITokenApiData * @property {string|null} [resourceAppid] TokenApiData resourceAppid * @property {string|null} [resourceEnv] TokenApiData resourceEnv */ /** * Constructs a new TokenApiData. * @exports TokenApiData * @classdesc Represents a TokenApiData. * @implements ITokenApiData * @constructor * @param {ITokenApiData=} [properties] Properties to set */ function TokenApiData(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * TokenApiData resourceAppid. * @member {string} resourceAppid * @memberof TokenApiData * @instance */ TokenApiData.prototype.resourceAppid = ""; /** * TokenApiData resourceEnv. * @member {string} resourceEnv * @memberof TokenApiData * @instance */ TokenApiData.prototype.resourceEnv = ""; /** * Creates a new TokenApiData instance using the specified properties. * @function create * @memberof TokenApiData * @static * @param {ITokenApiData=} [properties] Properties to set * @returns {TokenApiData} TokenApiData instance */ TokenApiData.create = function create(properties) { return new TokenApiData(properties); }; /** * Encodes the specified TokenApiData message. Does not implicitly {@link TokenApiData.verify|verify} messages. * @function encode * @memberof TokenApiData * @static * @param {ITokenApiData} message TokenApiData message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ TokenApiData.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.resourceAppid != null && message.hasOwnProperty("resourceAppid")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.resourceAppid); if (message.resourceEnv != null && message.hasOwnProperty("resourceEnv")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.resourceEnv); return writer; }; /** * Encodes the specified TokenApiData message, length delimited. Does not implicitly {@link TokenApiData.verify|verify} messages. * @function encodeDelimited * @memberof TokenApiData * @static * @param {ITokenApiData} message TokenApiData message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ TokenApiData.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a TokenApiData message from the specified reader or buffer. * @function decode * @memberof TokenApiData * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {TokenApiData} TokenApiData * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ TokenApiData.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.TokenApiData(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.resourceAppid = reader.string(); break; case 2: message.resourceEnv = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a TokenApiData message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof TokenApiData * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {TokenApiData} TokenApiData * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ TokenApiData.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a TokenApiData message. * @function verify * @memberof TokenApiData * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ TokenApiData.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.resourceAppid != null && message.hasOwnProperty("resourceAppid")) if (!$util.isString(message.resourceAppid)) return "resourceAppid: string expected"; if (message.resourceEnv != null && message.hasOwnProperty("resourceEnv")) if (!$util.isString(message.resourceEnv)) return "resourceEnv: string expected"; return null; }; /** * Creates a TokenApiData message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof TokenApiData * @static * @param {Object.} object Plain object * @returns {TokenApiData} TokenApiData */ TokenApiData.fromObject = function fromObject(object) { if (object instanceof $root.TokenApiData) return object; var message = new $root.TokenApiData(); if (object.resourceAppid != null) message.resourceAppid = String(object.resourceAppid); if (object.resourceEnv != null) message.resourceEnv = String(object.resourceEnv); return message; }; /** * Creates a plain object from a TokenApiData message. Also converts values to other types if specified. * @function toObject * @memberof TokenApiData * @static * @param {TokenApiData} message TokenApiData * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ TokenApiData.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.resourceAppid = ""; object.resourceEnv = ""; } if (message.resourceAppid != null && message.hasOwnProperty("resourceAppid")) object.resourceAppid = message.resourceAppid; if (message.resourceEnv != null && message.hasOwnProperty("resourceEnv")) object.resourceEnv = message.resourceEnv; return object; }; /** * Converts this TokenApiData to JSON. * @function toJSON * @memberof TokenApiData * @instance * @returns {Object.} JSON object */ TokenApiData.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return TokenApiData; })(); $root.CommApiData = (function() { /** * Properties of a CommApiData. * @exports ICommApiData * @interface ICommApiData * @property {CommApiData.ApiType|null} [apiType] CommApiData apiType * @property {IOpenApiData|null} [openapiData] CommApiData openapiData * @property {IInnerApiData|null} [innerData] CommApiData innerData * @property {ISvrkitApiData|null} [svrkitData] CommApiData svrkitData * @property {ITokenApiData|null} [tokenData] CommApiData tokenData * @property {string|null} [appid] CommApiData appid */ /** * Constructs a new CommApiData. * @exports CommApiData * @classdesc Represents a CommApiData. * @implements ICommApiData * @constructor * @param {ICommApiData=} [properties] Properties to set */ function CommApiData(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * CommApiData apiType. * @member {CommApiData.ApiType} apiType * @memberof CommApiData * @instance */ CommApiData.prototype.apiType = 0; /** * CommApiData openapiData. * @member {IOpenApiData|null|undefined} openapiData * @memberof CommApiData * @instance */ CommApiData.prototype.openapiData = null; /** * CommApiData innerData. * @member {IInnerApiData|null|undefined} innerData * @memberof CommApiData * @instance */ CommApiData.prototype.innerData = null; /** * CommApiData svrkitData. * @member {ISvrkitApiData|null|undefined} svrkitData * @memberof CommApiData * @instance */ CommApiData.prototype.svrkitData = null; /** * CommApiData tokenData. * @member {ITokenApiData|null|undefined} tokenData * @memberof CommApiData * @instance */ CommApiData.prototype.tokenData = null; /** * CommApiData appid. * @member {string} appid * @memberof CommApiData * @instance */ CommApiData.prototype.appid = ""; /** * Creates a new CommApiData instance using the specified properties. * @function create * @memberof CommApiData * @static * @param {ICommApiData=} [properties] Properties to set * @returns {CommApiData} CommApiData instance */ CommApiData.create = function create(properties) { return new CommApiData(properties); }; /** * Encodes the specified CommApiData message. Does not implicitly {@link CommApiData.verify|verify} messages. * @function encode * @memberof CommApiData * @static * @param {ICommApiData} message CommApiData message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ CommApiData.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.apiType != null && message.hasOwnProperty("apiType")) writer.uint32(/* id 1, wireType 0 =*/8).int32(message.apiType); if (message.openapiData != null && message.hasOwnProperty("openapiData")) $root.OpenApiData.encode(message.openapiData, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.innerData != null && message.hasOwnProperty("innerData")) $root.InnerApiData.encode(message.innerData, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); if (message.svrkitData != null && message.hasOwnProperty("svrkitData")) $root.SvrkitApiData.encode(message.svrkitData, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); if (message.tokenData != null && message.hasOwnProperty("tokenData")) $root.TokenApiData.encode(message.tokenData, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); if (message.appid != null && message.hasOwnProperty("appid")) writer.uint32(/* id 6, wireType 2 =*/50).string(message.appid); return writer; }; /** * Encodes the specified CommApiData message, length delimited. Does not implicitly {@link CommApiData.verify|verify} messages. * @function encodeDelimited * @memberof CommApiData * @static * @param {ICommApiData} message CommApiData message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ CommApiData.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a CommApiData message from the specified reader or buffer. * @function decode * @memberof CommApiData * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {CommApiData} CommApiData * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ CommApiData.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.CommApiData(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.apiType = reader.int32(); break; case 2: message.openapiData = $root.OpenApiData.decode(reader, reader.uint32()); break; case 3: message.innerData = $root.InnerApiData.decode(reader, reader.uint32()); break; case 4: message.svrkitData = $root.SvrkitApiData.decode(reader, reader.uint32()); break; case 5: message.tokenData = $root.TokenApiData.decode(reader, reader.uint32()); break; case 6: message.appid = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a CommApiData message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof CommApiData * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {CommApiData} CommApiData * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ CommApiData.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a CommApiData message. * @function verify * @memberof CommApiData * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ CommApiData.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.apiType != null && message.hasOwnProperty("apiType")) switch (message.apiType) { default: return "apiType: enum value expected"; case 0: case 1: case 2: case 3: break; } if (message.openapiData != null && message.hasOwnProperty("openapiData")) { var error = $root.OpenApiData.verify(message.openapiData); if (error) return "openapiData." + error; } if (message.innerData != null && message.hasOwnProperty("innerData")) { var error = $root.InnerApiData.verify(message.innerData); if (error) return "innerData." + error; } if (message.svrkitData != null && message.hasOwnProperty("svrkitData")) { var error = $root.SvrkitApiData.verify(message.svrkitData); if (error) return "svrkitData." + error; } if (message.tokenData != null && message.hasOwnProperty("tokenData")) { var error = $root.TokenApiData.verify(message.tokenData); if (error) return "tokenData." + error; } if (message.appid != null && message.hasOwnProperty("appid")) if (!$util.isString(message.appid)) return "appid: string expected"; return null; }; /** * Creates a CommApiData message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof CommApiData * @static * @param {Object.} object Plain object * @returns {CommApiData} CommApiData */ CommApiData.fromObject = function fromObject(object) { if (object instanceof $root.CommApiData) return object; var message = new $root.CommApiData(); switch (object.apiType) { case "OPEN_API": case 0: message.apiType = 0; break; case "INNER_API": case 1: message.apiType = 1; break; case "SVRKIT_API": case 2: message.apiType = 2; break; case "TOKEN_API": case 3: message.apiType = 3; break; } if (object.openapiData != null) { if (typeof object.openapiData !== "object") throw TypeError(".CommApiData.openapiData: object expected"); message.openapiData = $root.OpenApiData.fromObject(object.openapiData); } if (object.innerData != null) { if (typeof object.innerData !== "object") throw TypeError(".CommApiData.innerData: object expected"); message.innerData = $root.InnerApiData.fromObject(object.innerData); } if (object.svrkitData != null) { if (typeof object.svrkitData !== "object") throw TypeError(".CommApiData.svrkitData: object expected"); message.svrkitData = $root.SvrkitApiData.fromObject(object.svrkitData); } if (object.tokenData != null) { if (typeof object.tokenData !== "object") throw TypeError(".CommApiData.tokenData: object expected"); message.tokenData = $root.TokenApiData.fromObject(object.tokenData); } if (object.appid != null) message.appid = String(object.appid); return message; }; /** * Creates a plain object from a CommApiData message. Also converts values to other types if specified. * @function toObject * @memberof CommApiData * @static * @param {CommApiData} message CommApiData * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ CommApiData.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.apiType = options.enums === String ? "OPEN_API" : 0; object.openapiData = null; object.innerData = null; object.svrkitData = null; object.tokenData = null; object.appid = ""; } if (message.apiType != null && message.hasOwnProperty("apiType")) object.apiType = options.enums === String ? $root.CommApiData.ApiType[message.apiType] : message.apiType; if (message.openapiData != null && message.hasOwnProperty("openapiData")) object.openapiData = $root.OpenApiData.toObject(message.openapiData, options); if (message.innerData != null && message.hasOwnProperty("innerData")) object.innerData = $root.InnerApiData.toObject(message.innerData, options); if (message.svrkitData != null && message.hasOwnProperty("svrkitData")) object.svrkitData = $root.SvrkitApiData.toObject(message.svrkitData, options); if (message.tokenData != null && message.hasOwnProperty("tokenData")) object.tokenData = $root.TokenApiData.toObject(message.tokenData, options); if (message.appid != null && message.hasOwnProperty("appid")) object.appid = message.appid; return object; }; /** * Converts this CommApiData to JSON. * @function toJSON * @memberof CommApiData * @instance * @returns {Object.} JSON object */ CommApiData.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** * ApiType enum. * @name CommApiData.ApiType * @enum {string} * @property {number} OPEN_API=0 OPEN_API value * @property {number} INNER_API=1 INNER_API value * @property {number} SVRKIT_API=2 SVRKIT_API value * @property {number} TOKEN_API=3 TOKEN_API value */ CommApiData.ApiType = (function() { var valuesById = {}, values = Object.create(valuesById); values[valuesById[0] = "OPEN_API"] = 0; values[valuesById[1] = "INNER_API"] = 1; values[valuesById[2] = "SVRKIT_API"] = 2; values[valuesById[3] = "TOKEN_API"] = 3; return values; })(); return CommApiData; })(); $root.CommOpenApiResp = (function() { /** * Properties of a CommOpenApiResp. * @exports ICommOpenApiResp * @interface ICommOpenApiResp * @property {Uint8Array|null} [respData] CommOpenApiResp respData * @property {string|null} [contentType] CommOpenApiResp contentType * @property {number|null} [errorCode] CommOpenApiResp errorCode * @property {number|null} [httpCode] CommOpenApiResp httpCode * @property {Array.|null} [headers] CommOpenApiResp headers * @property {number|null} [svrkitErrorCode] CommOpenApiResp svrkitErrorCode */ /** * Constructs a new CommOpenApiResp. * @exports CommOpenApiResp * @classdesc Represents a CommOpenApiResp. * @implements ICommOpenApiResp * @constructor * @param {ICommOpenApiResp=} [properties] Properties to set */ function CommOpenApiResp(properties) { this.headers = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * CommOpenApiResp respData. * @member {Uint8Array} respData * @memberof CommOpenApiResp * @instance */ CommOpenApiResp.prototype.respData = $util.newBuffer([]); /** * CommOpenApiResp contentType. * @member {string} contentType * @memberof CommOpenApiResp * @instance */ CommOpenApiResp.prototype.contentType = ""; /** * CommOpenApiResp errorCode. * @member {number} errorCode * @memberof CommOpenApiResp * @instance */ CommOpenApiResp.prototype.errorCode = 0; /** * CommOpenApiResp httpCode. * @member {number} httpCode * @memberof CommOpenApiResp * @instance */ CommOpenApiResp.prototype.httpCode = 0; /** * CommOpenApiResp headers. * @member {Array.} headers * @memberof CommOpenApiResp * @instance */ CommOpenApiResp.prototype.headers = $util.emptyArray; /** * CommOpenApiResp svrkitErrorCode. * @member {number} svrkitErrorCode * @memberof CommOpenApiResp * @instance */ CommOpenApiResp.prototype.svrkitErrorCode = 0; /** * Creates a new CommOpenApiResp instance using the specified properties. * @function create * @memberof CommOpenApiResp * @static * @param {ICommOpenApiResp=} [properties] Properties to set * @returns {CommOpenApiResp} CommOpenApiResp instance */ CommOpenApiResp.create = function create(properties) { return new CommOpenApiResp(properties); }; /** * Encodes the specified CommOpenApiResp message. Does not implicitly {@link CommOpenApiResp.verify|verify} messages. * @function encode * @memberof CommOpenApiResp * @static * @param {ICommOpenApiResp} message CommOpenApiResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ CommOpenApiResp.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.respData != null && message.hasOwnProperty("respData")) writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.respData); if (message.contentType != null && message.hasOwnProperty("contentType")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.contentType); if (message.errorCode != null && message.hasOwnProperty("errorCode")) writer.uint32(/* id 3, wireType 0 =*/24).int32(message.errorCode); if (message.httpCode != null && message.hasOwnProperty("httpCode")) writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.httpCode); if (message.headers != null && message.headers.length) for (var i = 0; i < message.headers.length; ++i) $root.HttpHeader.encode(message.headers[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); if (message.svrkitErrorCode != null && message.hasOwnProperty("svrkitErrorCode")) writer.uint32(/* id 6, wireType 0 =*/48).int32(message.svrkitErrorCode); return writer; }; /** * Encodes the specified CommOpenApiResp message, length delimited. Does not implicitly {@link CommOpenApiResp.verify|verify} messages. * @function encodeDelimited * @memberof CommOpenApiResp * @static * @param {ICommOpenApiResp} message CommOpenApiResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ CommOpenApiResp.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a CommOpenApiResp message from the specified reader or buffer. * @function decode * @memberof CommOpenApiResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {CommOpenApiResp} CommOpenApiResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ CommOpenApiResp.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.CommOpenApiResp(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.respData = reader.bytes(); break; case 2: message.contentType = reader.string(); break; case 3: message.errorCode = reader.int32(); break; case 4: message.httpCode = reader.uint32(); break; case 5: if (!(message.headers && message.headers.length)) message.headers = []; message.headers.push($root.HttpHeader.decode(reader, reader.uint32())); break; case 6: message.svrkitErrorCode = reader.int32(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a CommOpenApiResp message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof CommOpenApiResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {CommOpenApiResp} CommOpenApiResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ CommOpenApiResp.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a CommOpenApiResp message. * @function verify * @memberof CommOpenApiResp * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ CommOpenApiResp.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.respData != null && message.hasOwnProperty("respData")) if (!(message.respData && typeof message.respData.length === "number" || $util.isString(message.respData))) return "respData: buffer expected"; if (message.contentType != null && message.hasOwnProperty("contentType")) if (!$util.isString(message.contentType)) return "contentType: string expected"; if (message.errorCode != null && message.hasOwnProperty("errorCode")) if (!$util.isInteger(message.errorCode)) return "errorCode: integer expected"; if (message.httpCode != null && message.hasOwnProperty("httpCode")) if (!$util.isInteger(message.httpCode)) return "httpCode: integer expected"; if (message.headers != null && message.hasOwnProperty("headers")) { if (!Array.isArray(message.headers)) return "headers: array expected"; for (var i = 0; i < message.headers.length; ++i) { var error = $root.HttpHeader.verify(message.headers[i]); if (error) return "headers." + error; } } if (message.svrkitErrorCode != null && message.hasOwnProperty("svrkitErrorCode")) if (!$util.isInteger(message.svrkitErrorCode)) return "svrkitErrorCode: integer expected"; return null; }; /** * Creates a CommOpenApiResp message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof CommOpenApiResp * @static * @param {Object.} object Plain object * @returns {CommOpenApiResp} CommOpenApiResp */ CommOpenApiResp.fromObject = function fromObject(object) { if (object instanceof $root.CommOpenApiResp) return object; var message = new $root.CommOpenApiResp(); if (object.respData != null) if (typeof object.respData === "string") $util.base64.decode(object.respData, message.respData = $util.newBuffer($util.base64.length(object.respData)), 0); else if (object.respData.length) message.respData = object.respData; if (object.contentType != null) message.contentType = String(object.contentType); if (object.errorCode != null) message.errorCode = object.errorCode | 0; if (object.httpCode != null) message.httpCode = object.httpCode >>> 0; if (object.headers) { if (!Array.isArray(object.headers)) throw TypeError(".CommOpenApiResp.headers: array expected"); message.headers = []; for (var i = 0; i < object.headers.length; ++i) { if (typeof object.headers[i] !== "object") throw TypeError(".CommOpenApiResp.headers: object expected"); message.headers[i] = $root.HttpHeader.fromObject(object.headers[i]); } } if (object.svrkitErrorCode != null) message.svrkitErrorCode = object.svrkitErrorCode | 0; return message; }; /** * Creates a plain object from a CommOpenApiResp message. Also converts values to other types if specified. * @function toObject * @memberof CommOpenApiResp * @static * @param {CommOpenApiResp} message CommOpenApiResp * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ CommOpenApiResp.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.arrays || options.defaults) object.headers = []; if (options.defaults) { if (options.bytes === String) object.respData = ""; else { object.respData = []; if (options.bytes !== Array) object.respData = $util.newBuffer(object.respData); } object.contentType = ""; object.errorCode = 0; object.httpCode = 0; object.svrkitErrorCode = 0; } if (message.respData != null && message.hasOwnProperty("respData")) object.respData = options.bytes === String ? $util.base64.encode(message.respData, 0, message.respData.length) : options.bytes === Array ? Array.prototype.slice.call(message.respData) : message.respData; if (message.contentType != null && message.hasOwnProperty("contentType")) object.contentType = message.contentType; if (message.errorCode != null && message.hasOwnProperty("errorCode")) object.errorCode = message.errorCode; if (message.httpCode != null && message.hasOwnProperty("httpCode")) object.httpCode = message.httpCode; if (message.headers && message.headers.length) { object.headers = []; for (var j = 0; j < message.headers.length; ++j) object.headers[j] = $root.HttpHeader.toObject(message.headers[j], options); } if (message.svrkitErrorCode != null && message.hasOwnProperty("svrkitErrorCode")) object.svrkitErrorCode = message.svrkitErrorCode; return object; }; /** * Converts this CommOpenApiResp to JSON. * @function toJSON * @memberof CommOpenApiResp * @instance * @returns {Object.} JSON object */ CommOpenApiResp.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return CommOpenApiResp; })(); $root.InnerApiData = (function() { /** * Properties of an InnerApiData. * @exports IInnerApiData * @interface IInnerApiData * @property {number|null} [modid] InnerApiData modid * @property {number|null} [cmdid] InnerApiData cmdid * @property {string|null} [url] InnerApiData url * @property {boolean|null} [useHttps] InnerApiData useHttps * @property {HTTP_METHODS|null} [method] InnerApiData method * @property {Array.|null} [headers] InnerApiData headers * @property {Uint8Array|null} [body] InnerApiData body */ /** * Constructs a new InnerApiData. * @exports InnerApiData * @classdesc Represents an InnerApiData. * @implements IInnerApiData * @constructor * @param {IInnerApiData=} [properties] Properties to set */ function InnerApiData(properties) { this.headers = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * InnerApiData modid. * @member {number} modid * @memberof InnerApiData * @instance */ InnerApiData.prototype.modid = 0; /** * InnerApiData cmdid. * @member {number} cmdid * @memberof InnerApiData * @instance */ InnerApiData.prototype.cmdid = 0; /** * InnerApiData url. * @member {string} url * @memberof InnerApiData * @instance */ InnerApiData.prototype.url = ""; /** * InnerApiData useHttps. * @member {boolean} useHttps * @memberof InnerApiData * @instance */ InnerApiData.prototype.useHttps = false; /** * InnerApiData method. * @member {HTTP_METHODS} method * @memberof InnerApiData * @instance */ InnerApiData.prototype.method = 1; /** * InnerApiData headers. * @member {Array.} headers * @memberof InnerApiData * @instance */ InnerApiData.prototype.headers = $util.emptyArray; /** * InnerApiData body. * @member {Uint8Array} body * @memberof InnerApiData * @instance */ InnerApiData.prototype.body = $util.newBuffer([]); /** * Creates a new InnerApiData instance using the specified properties. * @function create * @memberof InnerApiData * @static * @param {IInnerApiData=} [properties] Properties to set * @returns {InnerApiData} InnerApiData instance */ InnerApiData.create = function create(properties) { return new InnerApiData(properties); }; /** * Encodes the specified InnerApiData message. Does not implicitly {@link InnerApiData.verify|verify} messages. * @function encode * @memberof InnerApiData * @static * @param {IInnerApiData} message InnerApiData message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ InnerApiData.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.modid != null && message.hasOwnProperty("modid")) writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.modid); if (message.cmdid != null && message.hasOwnProperty("cmdid")) writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.cmdid); if (message.url != null && message.hasOwnProperty("url")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.url); if (message.useHttps != null && message.hasOwnProperty("useHttps")) writer.uint32(/* id 4, wireType 0 =*/32).bool(message.useHttps); if (message.method != null && message.hasOwnProperty("method")) writer.uint32(/* id 5, wireType 0 =*/40).int32(message.method); if (message.headers != null && message.headers.length) for (var i = 0; i < message.headers.length; ++i) writer.uint32(/* id 6, wireType 2 =*/50).string(message.headers[i]); if (message.body != null && message.hasOwnProperty("body")) writer.uint32(/* id 7, wireType 2 =*/58).bytes(message.body); return writer; }; /** * Encodes the specified InnerApiData message, length delimited. Does not implicitly {@link InnerApiData.verify|verify} messages. * @function encodeDelimited * @memberof InnerApiData * @static * @param {IInnerApiData} message InnerApiData message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ InnerApiData.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes an InnerApiData message from the specified reader or buffer. * @function decode * @memberof InnerApiData * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {InnerApiData} InnerApiData * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ InnerApiData.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.InnerApiData(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.modid = reader.uint32(); break; case 2: message.cmdid = reader.uint32(); break; case 3: message.url = reader.string(); break; case 4: message.useHttps = reader.bool(); break; case 5: message.method = reader.int32(); break; case 6: if (!(message.headers && message.headers.length)) message.headers = []; message.headers.push(reader.string()); break; case 7: message.body = reader.bytes(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes an InnerApiData message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof InnerApiData * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {InnerApiData} InnerApiData * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ InnerApiData.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies an InnerApiData message. * @function verify * @memberof InnerApiData * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ InnerApiData.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.modid != null && message.hasOwnProperty("modid")) if (!$util.isInteger(message.modid)) return "modid: integer expected"; if (message.cmdid != null && message.hasOwnProperty("cmdid")) if (!$util.isInteger(message.cmdid)) return "cmdid: integer expected"; if (message.url != null && message.hasOwnProperty("url")) if (!$util.isString(message.url)) return "url: string expected"; if (message.useHttps != null && message.hasOwnProperty("useHttps")) if (typeof message.useHttps !== "boolean") return "useHttps: boolean expected"; if (message.method != null && message.hasOwnProperty("method")) switch (message.method) { default: return "method: enum value expected"; case 1: case 2: case 3: case 4: case 5: case 6: break; } if (message.headers != null && message.hasOwnProperty("headers")) { if (!Array.isArray(message.headers)) return "headers: array expected"; for (var i = 0; i < message.headers.length; ++i) if (!$util.isString(message.headers[i])) return "headers: string[] expected"; } if (message.body != null && message.hasOwnProperty("body")) if (!(message.body && typeof message.body.length === "number" || $util.isString(message.body))) return "body: buffer expected"; return null; }; /** * Creates an InnerApiData message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof InnerApiData * @static * @param {Object.} object Plain object * @returns {InnerApiData} InnerApiData */ InnerApiData.fromObject = function fromObject(object) { if (object instanceof $root.InnerApiData) return object; var message = new $root.InnerApiData(); if (object.modid != null) message.modid = object.modid >>> 0; if (object.cmdid != null) message.cmdid = object.cmdid >>> 0; if (object.url != null) message.url = String(object.url); if (object.useHttps != null) message.useHttps = Boolean(object.useHttps); switch (object.method) { case "HTTP_GET": case 1: message.method = 1; break; case "HTTP_POST": case 2: message.method = 2; break; case "HTTP_PUT": case 3: message.method = 3; break; case "HTTP_DELETE": case 4: message.method = 4; break; case "HTTP_HEAD": case 5: message.method = 5; break; case "HTTP_PATCH": case 6: message.method = 6; break; } if (object.headers) { if (!Array.isArray(object.headers)) throw TypeError(".InnerApiData.headers: array expected"); message.headers = []; for (var i = 0; i < object.headers.length; ++i) message.headers[i] = String(object.headers[i]); } if (object.body != null) if (typeof object.body === "string") $util.base64.decode(object.body, message.body = $util.newBuffer($util.base64.length(object.body)), 0); else if (object.body.length) message.body = object.body; return message; }; /** * Creates a plain object from an InnerApiData message. Also converts values to other types if specified. * @function toObject * @memberof InnerApiData * @static * @param {InnerApiData} message InnerApiData * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ InnerApiData.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.arrays || options.defaults) object.headers = []; if (options.defaults) { object.modid = 0; object.cmdid = 0; object.url = ""; object.useHttps = false; object.method = options.enums === String ? "HTTP_GET" : 1; if (options.bytes === String) object.body = ""; else { object.body = []; if (options.bytes !== Array) object.body = $util.newBuffer(object.body); } } if (message.modid != null && message.hasOwnProperty("modid")) object.modid = message.modid; if (message.cmdid != null && message.hasOwnProperty("cmdid")) object.cmdid = message.cmdid; if (message.url != null && message.hasOwnProperty("url")) object.url = message.url; if (message.useHttps != null && message.hasOwnProperty("useHttps")) object.useHttps = message.useHttps; if (message.method != null && message.hasOwnProperty("method")) object.method = options.enums === String ? $root.HTTP_METHODS[message.method] : message.method; if (message.headers && message.headers.length) { object.headers = []; for (var j = 0; j < message.headers.length; ++j) object.headers[j] = message.headers[j]; } if (message.body != null && message.hasOwnProperty("body")) object.body = options.bytes === String ? $util.base64.encode(message.body, 0, message.body.length) : options.bytes === Array ? Array.prototype.slice.call(message.body) : message.body; return object; }; /** * Converts this InnerApiData to JSON. * @function toJSON * @memberof InnerApiData * @instance * @returns {Object.} JSON object */ InnerApiData.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return InnerApiData; })(); $root.SvrkitApiData = (function() { /** * Properties of a SvrkitApiData. * @exports ISvrkitApiData * @interface ISvrkitApiData * @property {string|null} [apiName] SvrkitApiData apiName * @property {Uint8Array|null} [reqData] SvrkitApiData reqData */ /** * Constructs a new SvrkitApiData. * @exports SvrkitApiData * @classdesc Represents a SvrkitApiData. * @implements ISvrkitApiData * @constructor * @param {ISvrkitApiData=} [properties] Properties to set */ function SvrkitApiData(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * SvrkitApiData apiName. * @member {string} apiName * @memberof SvrkitApiData * @instance */ SvrkitApiData.prototype.apiName = ""; /** * SvrkitApiData reqData. * @member {Uint8Array} reqData * @memberof SvrkitApiData * @instance */ SvrkitApiData.prototype.reqData = $util.newBuffer([]); /** * Creates a new SvrkitApiData instance using the specified properties. * @function create * @memberof SvrkitApiData * @static * @param {ISvrkitApiData=} [properties] Properties to set * @returns {SvrkitApiData} SvrkitApiData instance */ SvrkitApiData.create = function create(properties) { return new SvrkitApiData(properties); }; /** * Encodes the specified SvrkitApiData message. Does not implicitly {@link SvrkitApiData.verify|verify} messages. * @function encode * @memberof SvrkitApiData * @static * @param {ISvrkitApiData} message SvrkitApiData message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ SvrkitApiData.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.apiName != null && message.hasOwnProperty("apiName")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.apiName); if (message.reqData != null && message.hasOwnProperty("reqData")) writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.reqData); return writer; }; /** * Encodes the specified SvrkitApiData message, length delimited. Does not implicitly {@link SvrkitApiData.verify|verify} messages. * @function encodeDelimited * @memberof SvrkitApiData * @static * @param {ISvrkitApiData} message SvrkitApiData message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ SvrkitApiData.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a SvrkitApiData message from the specified reader or buffer. * @function decode * @memberof SvrkitApiData * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {SvrkitApiData} SvrkitApiData * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ SvrkitApiData.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SvrkitApiData(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.apiName = reader.string(); break; case 2: message.reqData = reader.bytes(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a SvrkitApiData message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof SvrkitApiData * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {SvrkitApiData} SvrkitApiData * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ SvrkitApiData.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a SvrkitApiData message. * @function verify * @memberof SvrkitApiData * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ SvrkitApiData.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.apiName != null && message.hasOwnProperty("apiName")) if (!$util.isString(message.apiName)) return "apiName: string expected"; if (message.reqData != null && message.hasOwnProperty("reqData")) if (!(message.reqData && typeof message.reqData.length === "number" || $util.isString(message.reqData))) return "reqData: buffer expected"; return null; }; /** * Creates a SvrkitApiData message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof SvrkitApiData * @static * @param {Object.} object Plain object * @returns {SvrkitApiData} SvrkitApiData */ SvrkitApiData.fromObject = function fromObject(object) { if (object instanceof $root.SvrkitApiData) return object; var message = new $root.SvrkitApiData(); if (object.apiName != null) message.apiName = String(object.apiName); if (object.reqData != null) if (typeof object.reqData === "string") $util.base64.decode(object.reqData, message.reqData = $util.newBuffer($util.base64.length(object.reqData)), 0); else if (object.reqData.length) message.reqData = object.reqData; return message; }; /** * Creates a plain object from a SvrkitApiData message. Also converts values to other types if specified. * @function toObject * @memberof SvrkitApiData * @static * @param {SvrkitApiData} message SvrkitApiData * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ SvrkitApiData.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.apiName = ""; if (options.bytes === String) object.reqData = ""; else { object.reqData = []; if (options.bytes !== Array) object.reqData = $util.newBuffer(object.reqData); } } if (message.apiName != null && message.hasOwnProperty("apiName")) object.apiName = message.apiName; if (message.reqData != null && message.hasOwnProperty("reqData")) object.reqData = options.bytes === String ? $util.base64.encode(message.reqData, 0, message.reqData.length) : options.bytes === Array ? Array.prototype.slice.call(message.reqData) : message.reqData; return object; }; /** * Converts this SvrkitApiData to JSON. * @function toJSON * @memberof SvrkitApiData * @instance * @returns {Object.} JSON object */ SvrkitApiData.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return SvrkitApiData; })(); /** * HTTP_METHODS enum. * @exports HTTP_METHODS * @enum {string} * @property {number} HTTP_GET=1 HTTP_GET value * @property {number} HTTP_POST=2 HTTP_POST value * @property {number} HTTP_PUT=3 HTTP_PUT value * @property {number} HTTP_DELETE=4 HTTP_DELETE value * @property {number} HTTP_HEAD=5 HTTP_HEAD value * @property {number} HTTP_PATCH=6 HTTP_PATCH value */ $root.HTTP_METHODS = (function() { var valuesById = {}, values = Object.create(valuesById); values[valuesById[1] = "HTTP_GET"] = 1; values[valuesById[2] = "HTTP_POST"] = 2; values[valuesById[3] = "HTTP_PUT"] = 3; values[valuesById[4] = "HTTP_DELETE"] = 4; values[valuesById[5] = "HTTP_HEAD"] = 5; values[valuesById[6] = "HTTP_PATCH"] = 6; return values; })(); $root.HttpHeader = (function() { /** * Properties of a HttpHeader. * @exports IHttpHeader * @interface IHttpHeader * @property {string|null} [key] HttpHeader key * @property {string|null} [value] HttpHeader value */ /** * Constructs a new HttpHeader. * @exports HttpHeader * @classdesc Represents a HttpHeader. * @implements IHttpHeader * @constructor * @param {IHttpHeader=} [properties] Properties to set */ function HttpHeader(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * HttpHeader key. * @member {string} key * @memberof HttpHeader * @instance */ HttpHeader.prototype.key = ""; /** * HttpHeader value. * @member {string} value * @memberof HttpHeader * @instance */ HttpHeader.prototype.value = ""; /** * Creates a new HttpHeader instance using the specified properties. * @function create * @memberof HttpHeader * @static * @param {IHttpHeader=} [properties] Properties to set * @returns {HttpHeader} HttpHeader instance */ HttpHeader.create = function create(properties) { return new HttpHeader(properties); }; /** * Encodes the specified HttpHeader message. Does not implicitly {@link HttpHeader.verify|verify} messages. * @function encode * @memberof HttpHeader * @static * @param {IHttpHeader} message HttpHeader message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ HttpHeader.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.key != null && message.hasOwnProperty("key")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.key); if (message.value != null && message.hasOwnProperty("value")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.value); return writer; }; /** * Encodes the specified HttpHeader message, length delimited. Does not implicitly {@link HttpHeader.verify|verify} messages. * @function encodeDelimited * @memberof HttpHeader * @static * @param {IHttpHeader} message HttpHeader message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ HttpHeader.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a HttpHeader message from the specified reader or buffer. * @function decode * @memberof HttpHeader * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {HttpHeader} HttpHeader * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ HttpHeader.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.HttpHeader(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.key = reader.string(); break; case 2: message.value = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a HttpHeader message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof HttpHeader * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {HttpHeader} HttpHeader * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ HttpHeader.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a HttpHeader message. * @function verify * @memberof HttpHeader * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ HttpHeader.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.key != null && message.hasOwnProperty("key")) if (!$util.isString(message.key)) return "key: string expected"; if (message.value != null && message.hasOwnProperty("value")) if (!$util.isString(message.value)) return "value: string expected"; return null; }; /** * Creates a HttpHeader message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof HttpHeader * @static * @param {Object.} object Plain object * @returns {HttpHeader} HttpHeader */ HttpHeader.fromObject = function fromObject(object) { if (object instanceof $root.HttpHeader) return object; var message = new $root.HttpHeader(); if (object.key != null) message.key = String(object.key); if (object.value != null) message.value = String(object.value); return message; }; /** * Creates a plain object from a HttpHeader message. Also converts values to other types if specified. * @function toObject * @memberof HttpHeader * @static * @param {HttpHeader} message HttpHeader * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ HttpHeader.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.key = ""; object.value = ""; } if (message.key != null && message.hasOwnProperty("key")) object.key = message.key; if (message.value != null && message.hasOwnProperty("value")) object.value = message.value; return object; }; /** * Converts this HttpHeader to JSON. * @function toJSON * @memberof HttpHeader * @instance * @returns {Object.} JSON object */ HttpHeader.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return HttpHeader; })(); $root.ApiGetOpenDataByCloudIdReq = (function() { /** * Properties of an ApiGetOpenDataByCloudIdReq. * @exports IApiGetOpenDataByCloudIdReq * @interface IApiGetOpenDataByCloudIdReq * @property {Array.|null} [cloudidList] ApiGetOpenDataByCloudIdReq cloudidList */ /** * Constructs a new ApiGetOpenDataByCloudIdReq. * @exports ApiGetOpenDataByCloudIdReq * @classdesc Represents an ApiGetOpenDataByCloudIdReq. * @implements IApiGetOpenDataByCloudIdReq * @constructor * @param {IApiGetOpenDataByCloudIdReq=} [properties] Properties to set */ function ApiGetOpenDataByCloudIdReq(properties) { this.cloudidList = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * ApiGetOpenDataByCloudIdReq cloudidList. * @member {Array.} cloudidList * @memberof ApiGetOpenDataByCloudIdReq * @instance */ ApiGetOpenDataByCloudIdReq.prototype.cloudidList = $util.emptyArray; /** * Creates a new ApiGetOpenDataByCloudIdReq instance using the specified properties. * @function create * @memberof ApiGetOpenDataByCloudIdReq * @static * @param {IApiGetOpenDataByCloudIdReq=} [properties] Properties to set * @returns {ApiGetOpenDataByCloudIdReq} ApiGetOpenDataByCloudIdReq instance */ ApiGetOpenDataByCloudIdReq.create = function create(properties) { return new ApiGetOpenDataByCloudIdReq(properties); }; /** * Encodes the specified ApiGetOpenDataByCloudIdReq message. Does not implicitly {@link ApiGetOpenDataByCloudIdReq.verify|verify} messages. * @function encode * @memberof ApiGetOpenDataByCloudIdReq * @static * @param {IApiGetOpenDataByCloudIdReq} message ApiGetOpenDataByCloudIdReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ApiGetOpenDataByCloudIdReq.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.cloudidList != null && message.cloudidList.length) for (var i = 0; i < message.cloudidList.length; ++i) writer.uint32(/* id 2, wireType 2 =*/18).string(message.cloudidList[i]); return writer; }; /** * Encodes the specified ApiGetOpenDataByCloudIdReq message, length delimited. Does not implicitly {@link ApiGetOpenDataByCloudIdReq.verify|verify} messages. * @function encodeDelimited * @memberof ApiGetOpenDataByCloudIdReq * @static * @param {IApiGetOpenDataByCloudIdReq} message ApiGetOpenDataByCloudIdReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ApiGetOpenDataByCloudIdReq.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes an ApiGetOpenDataByCloudIdReq message from the specified reader or buffer. * @function decode * @memberof ApiGetOpenDataByCloudIdReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {ApiGetOpenDataByCloudIdReq} ApiGetOpenDataByCloudIdReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ApiGetOpenDataByCloudIdReq.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ApiGetOpenDataByCloudIdReq(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 2: if (!(message.cloudidList && message.cloudidList.length)) message.cloudidList = []; message.cloudidList.push(reader.string()); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes an ApiGetOpenDataByCloudIdReq message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof ApiGetOpenDataByCloudIdReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {ApiGetOpenDataByCloudIdReq} ApiGetOpenDataByCloudIdReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ApiGetOpenDataByCloudIdReq.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies an ApiGetOpenDataByCloudIdReq message. * @function verify * @memberof ApiGetOpenDataByCloudIdReq * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ ApiGetOpenDataByCloudIdReq.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.cloudidList != null && message.hasOwnProperty("cloudidList")) { if (!Array.isArray(message.cloudidList)) return "cloudidList: array expected"; for (var i = 0; i < message.cloudidList.length; ++i) if (!$util.isString(message.cloudidList[i])) return "cloudidList: string[] expected"; } return null; }; /** * Creates an ApiGetOpenDataByCloudIdReq message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof ApiGetOpenDataByCloudIdReq * @static * @param {Object.} object Plain object * @returns {ApiGetOpenDataByCloudIdReq} ApiGetOpenDataByCloudIdReq */ ApiGetOpenDataByCloudIdReq.fromObject = function fromObject(object) { if (object instanceof $root.ApiGetOpenDataByCloudIdReq) return object; var message = new $root.ApiGetOpenDataByCloudIdReq(); if (object.cloudidList) { if (!Array.isArray(object.cloudidList)) throw TypeError(".ApiGetOpenDataByCloudIdReq.cloudidList: array expected"); message.cloudidList = []; for (var i = 0; i < object.cloudidList.length; ++i) message.cloudidList[i] = String(object.cloudidList[i]); } return message; }; /** * Creates a plain object from an ApiGetOpenDataByCloudIdReq message. Also converts values to other types if specified. * @function toObject * @memberof ApiGetOpenDataByCloudIdReq * @static * @param {ApiGetOpenDataByCloudIdReq} message ApiGetOpenDataByCloudIdReq * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ ApiGetOpenDataByCloudIdReq.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.arrays || options.defaults) object.cloudidList = []; if (message.cloudidList && message.cloudidList.length) { object.cloudidList = []; for (var j = 0; j < message.cloudidList.length; ++j) object.cloudidList[j] = message.cloudidList[j]; } return object; }; /** * Converts this ApiGetOpenDataByCloudIdReq to JSON. * @function toJSON * @memberof ApiGetOpenDataByCloudIdReq * @instance * @returns {Object.} JSON object */ ApiGetOpenDataByCloudIdReq.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return ApiGetOpenDataByCloudIdReq; })(); $root.ApiGetOpenDataByCloudIdResp = (function() { /** * Properties of an ApiGetOpenDataByCloudIdResp. * @exports IApiGetOpenDataByCloudIdResp * @interface IApiGetOpenDataByCloudIdResp * @property {Array.|null} [dataList] ApiGetOpenDataByCloudIdResp dataList */ /** * Constructs a new ApiGetOpenDataByCloudIdResp. * @exports ApiGetOpenDataByCloudIdResp * @classdesc Represents an ApiGetOpenDataByCloudIdResp. * @implements IApiGetOpenDataByCloudIdResp * @constructor * @param {IApiGetOpenDataByCloudIdResp=} [properties] Properties to set */ function ApiGetOpenDataByCloudIdResp(properties) { this.dataList = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * ApiGetOpenDataByCloudIdResp dataList. * @member {Array.} dataList * @memberof ApiGetOpenDataByCloudIdResp * @instance */ ApiGetOpenDataByCloudIdResp.prototype.dataList = $util.emptyArray; /** * Creates a new ApiGetOpenDataByCloudIdResp instance using the specified properties. * @function create * @memberof ApiGetOpenDataByCloudIdResp * @static * @param {IApiGetOpenDataByCloudIdResp=} [properties] Properties to set * @returns {ApiGetOpenDataByCloudIdResp} ApiGetOpenDataByCloudIdResp instance */ ApiGetOpenDataByCloudIdResp.create = function create(properties) { return new ApiGetOpenDataByCloudIdResp(properties); }; /** * Encodes the specified ApiGetOpenDataByCloudIdResp message. Does not implicitly {@link ApiGetOpenDataByCloudIdResp.verify|verify} messages. * @function encode * @memberof ApiGetOpenDataByCloudIdResp * @static * @param {IApiGetOpenDataByCloudIdResp} message ApiGetOpenDataByCloudIdResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ApiGetOpenDataByCloudIdResp.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.dataList != null && message.dataList.length) for (var i = 0; i < message.dataList.length; ++i) $root.ApiGetOpenDataByCloudIdResp.OpDataItem.encode(message.dataList[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** * Encodes the specified ApiGetOpenDataByCloudIdResp message, length delimited. Does not implicitly {@link ApiGetOpenDataByCloudIdResp.verify|verify} messages. * @function encodeDelimited * @memberof ApiGetOpenDataByCloudIdResp * @static * @param {IApiGetOpenDataByCloudIdResp} message ApiGetOpenDataByCloudIdResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ApiGetOpenDataByCloudIdResp.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes an ApiGetOpenDataByCloudIdResp message from the specified reader or buffer. * @function decode * @memberof ApiGetOpenDataByCloudIdResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {ApiGetOpenDataByCloudIdResp} ApiGetOpenDataByCloudIdResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ApiGetOpenDataByCloudIdResp.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ApiGetOpenDataByCloudIdResp(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: if (!(message.dataList && message.dataList.length)) message.dataList = []; message.dataList.push($root.ApiGetOpenDataByCloudIdResp.OpDataItem.decode(reader, reader.uint32())); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes an ApiGetOpenDataByCloudIdResp message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof ApiGetOpenDataByCloudIdResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {ApiGetOpenDataByCloudIdResp} ApiGetOpenDataByCloudIdResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ApiGetOpenDataByCloudIdResp.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies an ApiGetOpenDataByCloudIdResp message. * @function verify * @memberof ApiGetOpenDataByCloudIdResp * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ ApiGetOpenDataByCloudIdResp.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.dataList != null && message.hasOwnProperty("dataList")) { if (!Array.isArray(message.dataList)) return "dataList: array expected"; for (var i = 0; i < message.dataList.length; ++i) { var error = $root.ApiGetOpenDataByCloudIdResp.OpDataItem.verify(message.dataList[i]); if (error) return "dataList." + error; } } return null; }; /** * Creates an ApiGetOpenDataByCloudIdResp message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof ApiGetOpenDataByCloudIdResp * @static * @param {Object.} object Plain object * @returns {ApiGetOpenDataByCloudIdResp} ApiGetOpenDataByCloudIdResp */ ApiGetOpenDataByCloudIdResp.fromObject = function fromObject(object) { if (object instanceof $root.ApiGetOpenDataByCloudIdResp) return object; var message = new $root.ApiGetOpenDataByCloudIdResp(); if (object.dataList) { if (!Array.isArray(object.dataList)) throw TypeError(".ApiGetOpenDataByCloudIdResp.dataList: array expected"); message.dataList = []; for (var i = 0; i < object.dataList.length; ++i) { if (typeof object.dataList[i] !== "object") throw TypeError(".ApiGetOpenDataByCloudIdResp.dataList: object expected"); message.dataList[i] = $root.ApiGetOpenDataByCloudIdResp.OpDataItem.fromObject(object.dataList[i]); } } return message; }; /** * Creates a plain object from an ApiGetOpenDataByCloudIdResp message. Also converts values to other types if specified. * @function toObject * @memberof ApiGetOpenDataByCloudIdResp * @static * @param {ApiGetOpenDataByCloudIdResp} message ApiGetOpenDataByCloudIdResp * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ ApiGetOpenDataByCloudIdResp.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.arrays || options.defaults) object.dataList = []; if (message.dataList && message.dataList.length) { object.dataList = []; for (var j = 0; j < message.dataList.length; ++j) object.dataList[j] = $root.ApiGetOpenDataByCloudIdResp.OpDataItem.toObject(message.dataList[j], options); } return object; }; /** * Converts this ApiGetOpenDataByCloudIdResp to JSON. * @function toJSON * @memberof ApiGetOpenDataByCloudIdResp * @instance * @returns {Object.} JSON object */ ApiGetOpenDataByCloudIdResp.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; ApiGetOpenDataByCloudIdResp.OpDataItem = (function() { /** * Properties of an OpDataItem. * @memberof ApiGetOpenDataByCloudIdResp * @interface IOpDataItem * @property {string|null} [cloudId] OpDataItem cloudId * @property {string|null} [json] OpDataItem json */ /** * Constructs a new OpDataItem. * @memberof ApiGetOpenDataByCloudIdResp * @classdesc Represents an OpDataItem. * @implements IOpDataItem * @constructor * @param {ApiGetOpenDataByCloudIdResp.IOpDataItem=} [properties] Properties to set */ function OpDataItem(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * OpDataItem cloudId. * @member {string} cloudId * @memberof ApiGetOpenDataByCloudIdResp.OpDataItem * @instance */ OpDataItem.prototype.cloudId = ""; /** * OpDataItem json. * @member {string} json * @memberof ApiGetOpenDataByCloudIdResp.OpDataItem * @instance */ OpDataItem.prototype.json = ""; /** * Creates a new OpDataItem instance using the specified properties. * @function create * @memberof ApiGetOpenDataByCloudIdResp.OpDataItem * @static * @param {ApiGetOpenDataByCloudIdResp.IOpDataItem=} [properties] Properties to set * @returns {ApiGetOpenDataByCloudIdResp.OpDataItem} OpDataItem instance */ OpDataItem.create = function create(properties) { return new OpDataItem(properties); }; /** * Encodes the specified OpDataItem message. Does not implicitly {@link ApiGetOpenDataByCloudIdResp.OpDataItem.verify|verify} messages. * @function encode * @memberof ApiGetOpenDataByCloudIdResp.OpDataItem * @static * @param {ApiGetOpenDataByCloudIdResp.IOpDataItem} message OpDataItem message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ OpDataItem.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.cloudId != null && message.hasOwnProperty("cloudId")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.cloudId); if (message.json != null && message.hasOwnProperty("json")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.json); return writer; }; /** * Encodes the specified OpDataItem message, length delimited. Does not implicitly {@link ApiGetOpenDataByCloudIdResp.OpDataItem.verify|verify} messages. * @function encodeDelimited * @memberof ApiGetOpenDataByCloudIdResp.OpDataItem * @static * @param {ApiGetOpenDataByCloudIdResp.IOpDataItem} message OpDataItem message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ OpDataItem.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes an OpDataItem message from the specified reader or buffer. * @function decode * @memberof ApiGetOpenDataByCloudIdResp.OpDataItem * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {ApiGetOpenDataByCloudIdResp.OpDataItem} OpDataItem * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ OpDataItem.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ApiGetOpenDataByCloudIdResp.OpDataItem(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.cloudId = reader.string(); break; case 2: message.json = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes an OpDataItem message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof ApiGetOpenDataByCloudIdResp.OpDataItem * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {ApiGetOpenDataByCloudIdResp.OpDataItem} OpDataItem * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ OpDataItem.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies an OpDataItem message. * @function verify * @memberof ApiGetOpenDataByCloudIdResp.OpDataItem * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ OpDataItem.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.cloudId != null && message.hasOwnProperty("cloudId")) if (!$util.isString(message.cloudId)) return "cloudId: string expected"; if (message.json != null && message.hasOwnProperty("json")) if (!$util.isString(message.json)) return "json: string expected"; return null; }; /** * Creates an OpDataItem message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof ApiGetOpenDataByCloudIdResp.OpDataItem * @static * @param {Object.} object Plain object * @returns {ApiGetOpenDataByCloudIdResp.OpDataItem} OpDataItem */ OpDataItem.fromObject = function fromObject(object) { if (object instanceof $root.ApiGetOpenDataByCloudIdResp.OpDataItem) return object; var message = new $root.ApiGetOpenDataByCloudIdResp.OpDataItem(); if (object.cloudId != null) message.cloudId = String(object.cloudId); if (object.json != null) message.json = String(object.json); return message; }; /** * Creates a plain object from an OpDataItem message. Also converts values to other types if specified. * @function toObject * @memberof ApiGetOpenDataByCloudIdResp.OpDataItem * @static * @param {ApiGetOpenDataByCloudIdResp.OpDataItem} message OpDataItem * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ OpDataItem.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.cloudId = ""; object.json = ""; } if (message.cloudId != null && message.hasOwnProperty("cloudId")) object.cloudId = message.cloudId; if (message.json != null && message.hasOwnProperty("json")) object.json = message.json; return object; }; /** * Converts this OpDataItem to JSON. * @function toJSON * @memberof ApiGetOpenDataByCloudIdResp.OpDataItem * @instance * @returns {Object.} JSON object */ OpDataItem.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return OpDataItem; })(); return ApiGetOpenDataByCloudIdResp; })(); $root.ApiVoipSignReq = (function() { /** * Properties of an ApiVoipSignReq. * @exports IApiVoipSignReq * @interface IApiVoipSignReq * @property {string|null} [groupId] ApiVoipSignReq groupId * @property {number|null} [timestamp] ApiVoipSignReq timestamp * @property {string|null} [nonce] ApiVoipSignReq nonce */ /** * Constructs a new ApiVoipSignReq. * @exports ApiVoipSignReq * @classdesc Represents an ApiVoipSignReq. * @implements IApiVoipSignReq * @constructor * @param {IApiVoipSignReq=} [properties] Properties to set */ function ApiVoipSignReq(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * ApiVoipSignReq groupId. * @member {string} groupId * @memberof ApiVoipSignReq * @instance */ ApiVoipSignReq.prototype.groupId = ""; /** * ApiVoipSignReq timestamp. * @member {number} timestamp * @memberof ApiVoipSignReq * @instance */ ApiVoipSignReq.prototype.timestamp = 0; /** * ApiVoipSignReq nonce. * @member {string} nonce * @memberof ApiVoipSignReq * @instance */ ApiVoipSignReq.prototype.nonce = ""; /** * Creates a new ApiVoipSignReq instance using the specified properties. * @function create * @memberof ApiVoipSignReq * @static * @param {IApiVoipSignReq=} [properties] Properties to set * @returns {ApiVoipSignReq} ApiVoipSignReq instance */ ApiVoipSignReq.create = function create(properties) { return new ApiVoipSignReq(properties); }; /** * Encodes the specified ApiVoipSignReq message. Does not implicitly {@link ApiVoipSignReq.verify|verify} messages. * @function encode * @memberof ApiVoipSignReq * @static * @param {IApiVoipSignReq} message ApiVoipSignReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ApiVoipSignReq.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.groupId != null && message.hasOwnProperty("groupId")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.groupId); if (message.timestamp != null && message.hasOwnProperty("timestamp")) writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.timestamp); if (message.nonce != null && message.hasOwnProperty("nonce")) writer.uint32(/* id 4, wireType 2 =*/34).string(message.nonce); return writer; }; /** * Encodes the specified ApiVoipSignReq message, length delimited. Does not implicitly {@link ApiVoipSignReq.verify|verify} messages. * @function encodeDelimited * @memberof ApiVoipSignReq * @static * @param {IApiVoipSignReq} message ApiVoipSignReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ApiVoipSignReq.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes an ApiVoipSignReq message from the specified reader or buffer. * @function decode * @memberof ApiVoipSignReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {ApiVoipSignReq} ApiVoipSignReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ApiVoipSignReq.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ApiVoipSignReq(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 2: message.groupId = reader.string(); break; case 3: message.timestamp = reader.uint32(); break; case 4: message.nonce = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes an ApiVoipSignReq message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof ApiVoipSignReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {ApiVoipSignReq} ApiVoipSignReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ApiVoipSignReq.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies an ApiVoipSignReq message. * @function verify * @memberof ApiVoipSignReq * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ ApiVoipSignReq.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.groupId != null && message.hasOwnProperty("groupId")) if (!$util.isString(message.groupId)) return "groupId: string expected"; if (message.timestamp != null && message.hasOwnProperty("timestamp")) if (!$util.isInteger(message.timestamp)) return "timestamp: integer expected"; if (message.nonce != null && message.hasOwnProperty("nonce")) if (!$util.isString(message.nonce)) return "nonce: string expected"; return null; }; /** * Creates an ApiVoipSignReq message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof ApiVoipSignReq * @static * @param {Object.} object Plain object * @returns {ApiVoipSignReq} ApiVoipSignReq */ ApiVoipSignReq.fromObject = function fromObject(object) { if (object instanceof $root.ApiVoipSignReq) return object; var message = new $root.ApiVoipSignReq(); if (object.groupId != null) message.groupId = String(object.groupId); if (object.timestamp != null) message.timestamp = object.timestamp >>> 0; if (object.nonce != null) message.nonce = String(object.nonce); return message; }; /** * Creates a plain object from an ApiVoipSignReq message. Also converts values to other types if specified. * @function toObject * @memberof ApiVoipSignReq * @static * @param {ApiVoipSignReq} message ApiVoipSignReq * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ ApiVoipSignReq.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.groupId = ""; object.timestamp = 0; object.nonce = ""; } if (message.groupId != null && message.hasOwnProperty("groupId")) object.groupId = message.groupId; if (message.timestamp != null && message.hasOwnProperty("timestamp")) object.timestamp = message.timestamp; if (message.nonce != null && message.hasOwnProperty("nonce")) object.nonce = message.nonce; return object; }; /** * Converts this ApiVoipSignReq to JSON. * @function toJSON * @memberof ApiVoipSignReq * @instance * @returns {Object.} JSON object */ ApiVoipSignReq.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return ApiVoipSignReq; })(); $root.ApiVoipSignResp = (function() { /** * Properties of an ApiVoipSignResp. * @exports IApiVoipSignResp * @interface IApiVoipSignResp * @property {string|null} [signature] ApiVoipSignResp signature */ /** * Constructs a new ApiVoipSignResp. * @exports ApiVoipSignResp * @classdesc Represents an ApiVoipSignResp. * @implements IApiVoipSignResp * @constructor * @param {IApiVoipSignResp=} [properties] Properties to set */ function ApiVoipSignResp(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * ApiVoipSignResp signature. * @member {string} signature * @memberof ApiVoipSignResp * @instance */ ApiVoipSignResp.prototype.signature = ""; /** * Creates a new ApiVoipSignResp instance using the specified properties. * @function create * @memberof ApiVoipSignResp * @static * @param {IApiVoipSignResp=} [properties] Properties to set * @returns {ApiVoipSignResp} ApiVoipSignResp instance */ ApiVoipSignResp.create = function create(properties) { return new ApiVoipSignResp(properties); }; /** * Encodes the specified ApiVoipSignResp message. Does not implicitly {@link ApiVoipSignResp.verify|verify} messages. * @function encode * @memberof ApiVoipSignResp * @static * @param {IApiVoipSignResp} message ApiVoipSignResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ApiVoipSignResp.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.signature != null && message.hasOwnProperty("signature")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.signature); return writer; }; /** * Encodes the specified ApiVoipSignResp message, length delimited. Does not implicitly {@link ApiVoipSignResp.verify|verify} messages. * @function encodeDelimited * @memberof ApiVoipSignResp * @static * @param {IApiVoipSignResp} message ApiVoipSignResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ApiVoipSignResp.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes an ApiVoipSignResp message from the specified reader or buffer. * @function decode * @memberof ApiVoipSignResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {ApiVoipSignResp} ApiVoipSignResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ApiVoipSignResp.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ApiVoipSignResp(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.signature = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes an ApiVoipSignResp message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof ApiVoipSignResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {ApiVoipSignResp} ApiVoipSignResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ApiVoipSignResp.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies an ApiVoipSignResp message. * @function verify * @memberof ApiVoipSignResp * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ ApiVoipSignResp.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.signature != null && message.hasOwnProperty("signature")) if (!$util.isString(message.signature)) return "signature: string expected"; return null; }; /** * Creates an ApiVoipSignResp message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof ApiVoipSignResp * @static * @param {Object.} object Plain object * @returns {ApiVoipSignResp} ApiVoipSignResp */ ApiVoipSignResp.fromObject = function fromObject(object) { if (object instanceof $root.ApiVoipSignResp) return object; var message = new $root.ApiVoipSignResp(); if (object.signature != null) message.signature = String(object.signature); return message; }; /** * Creates a plain object from an ApiVoipSignResp message. Also converts values to other types if specified. * @function toObject * @memberof ApiVoipSignResp * @static * @param {ApiVoipSignResp} message ApiVoipSignResp * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ ApiVoipSignResp.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) object.signature = ""; if (message.signature != null && message.hasOwnProperty("signature")) object.signature = message.signature; return object; }; /** * Converts this ApiVoipSignResp to JSON. * @function toJSON * @memberof ApiVoipSignResp * @instance * @returns {Object.} JSON object */ ApiVoipSignResp.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return ApiVoipSignResp; })(); $root.GetCloudCallSignReq = (function() { /** * Properties of a GetCloudCallSignReq. * @exports IGetCloudCallSignReq * @interface IGetCloudCallSignReq * @property {Array.|null} [parameterList] GetCloudCallSignReq parameterList */ /** * Constructs a new GetCloudCallSignReq. * @exports GetCloudCallSignReq * @classdesc Represents a GetCloudCallSignReq. * @implements IGetCloudCallSignReq * @constructor * @param {IGetCloudCallSignReq=} [properties] Properties to set */ function GetCloudCallSignReq(properties) { this.parameterList = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * GetCloudCallSignReq parameterList. * @member {Array.} parameterList * @memberof GetCloudCallSignReq * @instance */ GetCloudCallSignReq.prototype.parameterList = $util.emptyArray; /** * Creates a new GetCloudCallSignReq instance using the specified properties. * @function create * @memberof GetCloudCallSignReq * @static * @param {IGetCloudCallSignReq=} [properties] Properties to set * @returns {GetCloudCallSignReq} GetCloudCallSignReq instance */ GetCloudCallSignReq.create = function create(properties) { return new GetCloudCallSignReq(properties); }; /** * Encodes the specified GetCloudCallSignReq message. Does not implicitly {@link GetCloudCallSignReq.verify|verify} messages. * @function encode * @memberof GetCloudCallSignReq * @static * @param {IGetCloudCallSignReq} message GetCloudCallSignReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GetCloudCallSignReq.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.parameterList != null && message.parameterList.length) for (var i = 0; i < message.parameterList.length; ++i) writer.uint32(/* id 2, wireType 2 =*/18).string(message.parameterList[i]); return writer; }; /** * Encodes the specified GetCloudCallSignReq message, length delimited. Does not implicitly {@link GetCloudCallSignReq.verify|verify} messages. * @function encodeDelimited * @memberof GetCloudCallSignReq * @static * @param {IGetCloudCallSignReq} message GetCloudCallSignReq message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GetCloudCallSignReq.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a GetCloudCallSignReq message from the specified reader or buffer. * @function decode * @memberof GetCloudCallSignReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {GetCloudCallSignReq} GetCloudCallSignReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GetCloudCallSignReq.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.GetCloudCallSignReq(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 2: if (!(message.parameterList && message.parameterList.length)) message.parameterList = []; message.parameterList.push(reader.string()); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a GetCloudCallSignReq message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof GetCloudCallSignReq * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {GetCloudCallSignReq} GetCloudCallSignReq * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GetCloudCallSignReq.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a GetCloudCallSignReq message. * @function verify * @memberof GetCloudCallSignReq * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ GetCloudCallSignReq.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.parameterList != null && message.hasOwnProperty("parameterList")) { if (!Array.isArray(message.parameterList)) return "parameterList: array expected"; for (var i = 0; i < message.parameterList.length; ++i) if (!$util.isString(message.parameterList[i])) return "parameterList: string[] expected"; } return null; }; /** * Creates a GetCloudCallSignReq message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof GetCloudCallSignReq * @static * @param {Object.} object Plain object * @returns {GetCloudCallSignReq} GetCloudCallSignReq */ GetCloudCallSignReq.fromObject = function fromObject(object) { if (object instanceof $root.GetCloudCallSignReq) return object; var message = new $root.GetCloudCallSignReq(); if (object.parameterList) { if (!Array.isArray(object.parameterList)) throw TypeError(".GetCloudCallSignReq.parameterList: array expected"); message.parameterList = []; for (var i = 0; i < object.parameterList.length; ++i) message.parameterList[i] = String(object.parameterList[i]); } return message; }; /** * Creates a plain object from a GetCloudCallSignReq message. Also converts values to other types if specified. * @function toObject * @memberof GetCloudCallSignReq * @static * @param {GetCloudCallSignReq} message GetCloudCallSignReq * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ GetCloudCallSignReq.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.arrays || options.defaults) object.parameterList = []; if (message.parameterList && message.parameterList.length) { object.parameterList = []; for (var j = 0; j < message.parameterList.length; ++j) object.parameterList[j] = message.parameterList[j]; } return object; }; /** * Converts this GetCloudCallSignReq to JSON. * @function toJSON * @memberof GetCloudCallSignReq * @instance * @returns {Object.} JSON object */ GetCloudCallSignReq.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return GetCloudCallSignReq; })(); $root.GetCloudCallSignResp = (function() { /** * Properties of a GetCloudCallSignResp. * @exports IGetCloudCallSignResp * @interface IGetCloudCallSignResp * @property {string|null} [signature] GetCloudCallSignResp signature */ /** * Constructs a new GetCloudCallSignResp. * @exports GetCloudCallSignResp * @classdesc Represents a GetCloudCallSignResp. * @implements IGetCloudCallSignResp * @constructor * @param {IGetCloudCallSignResp=} [properties] Properties to set */ function GetCloudCallSignResp(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * GetCloudCallSignResp signature. * @member {string} signature * @memberof GetCloudCallSignResp * @instance */ GetCloudCallSignResp.prototype.signature = ""; /** * Creates a new GetCloudCallSignResp instance using the specified properties. * @function create * @memberof GetCloudCallSignResp * @static * @param {IGetCloudCallSignResp=} [properties] Properties to set * @returns {GetCloudCallSignResp} GetCloudCallSignResp instance */ GetCloudCallSignResp.create = function create(properties) { return new GetCloudCallSignResp(properties); }; /** * Encodes the specified GetCloudCallSignResp message. Does not implicitly {@link GetCloudCallSignResp.verify|verify} messages. * @function encode * @memberof GetCloudCallSignResp * @static * @param {IGetCloudCallSignResp} message GetCloudCallSignResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GetCloudCallSignResp.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.signature != null && message.hasOwnProperty("signature")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.signature); return writer; }; /** * Encodes the specified GetCloudCallSignResp message, length delimited. Does not implicitly {@link GetCloudCallSignResp.verify|verify} messages. * @function encodeDelimited * @memberof GetCloudCallSignResp * @static * @param {IGetCloudCallSignResp} message GetCloudCallSignResp message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ GetCloudCallSignResp.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a GetCloudCallSignResp message from the specified reader or buffer. * @function decode * @memberof GetCloudCallSignResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {GetCloudCallSignResp} GetCloudCallSignResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GetCloudCallSignResp.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.GetCloudCallSignResp(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.signature = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a GetCloudCallSignResp message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof GetCloudCallSignResp * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {GetCloudCallSignResp} GetCloudCallSignResp * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ GetCloudCallSignResp.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a GetCloudCallSignResp message. * @function verify * @memberof GetCloudCallSignResp * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ GetCloudCallSignResp.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.signature != null && message.hasOwnProperty("signature")) if (!$util.isString(message.signature)) return "signature: string expected"; return null; }; /** * Creates a GetCloudCallSignResp message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof GetCloudCallSignResp * @static * @param {Object.} object Plain object * @returns {GetCloudCallSignResp} GetCloudCallSignResp */ GetCloudCallSignResp.fromObject = function fromObject(object) { if (object instanceof $root.GetCloudCallSignResp) return object; var message = new $root.GetCloudCallSignResp(); if (object.signature != null) message.signature = String(object.signature); return message; }; /** * Creates a plain object from a GetCloudCallSignResp message. Also converts values to other types if specified. * @function toObject * @memberof GetCloudCallSignResp * @static * @param {GetCloudCallSignResp} message GetCloudCallSignResp * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ GetCloudCallSignResp.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) object.signature = ""; if (message.signature != null && message.hasOwnProperty("signature")) object.signature = message.signature; return object; }; /** * Converts this GetCloudCallSignResp to JSON. * @function toJSON * @memberof GetCloudCallSignResp * @instance * @returns {Object.} JSON object */ GetCloudCallSignResp.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return GetCloudCallSignResp; })(); $root.AuthorizationInfo = (function() { /** * Properties of an AuthorizationInfo. * @exports IAuthorizationInfo * @interface IAuthorizationInfo * @property {AuthorizationInfo.ITcbCredentials|null} [tcbCredentials] AuthorizationInfo tcbCredentials * @property {Uint8Array|null} [wxParam] AuthorizationInfo wxParam */ /** * Constructs a new AuthorizationInfo. * @exports AuthorizationInfo * @classdesc Represents an AuthorizationInfo. * @implements IAuthorizationInfo * @constructor * @param {IAuthorizationInfo=} [properties] Properties to set */ function AuthorizationInfo(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * AuthorizationInfo tcbCredentials. * @member {AuthorizationInfo.ITcbCredentials|null|undefined} tcbCredentials * @memberof AuthorizationInfo * @instance */ AuthorizationInfo.prototype.tcbCredentials = null; /** * AuthorizationInfo wxParam. * @member {Uint8Array} wxParam * @memberof AuthorizationInfo * @instance */ AuthorizationInfo.prototype.wxParam = $util.newBuffer([]); /** * Creates a new AuthorizationInfo instance using the specified properties. * @function create * @memberof AuthorizationInfo * @static * @param {IAuthorizationInfo=} [properties] Properties to set * @returns {AuthorizationInfo} AuthorizationInfo instance */ AuthorizationInfo.create = function create(properties) { return new AuthorizationInfo(properties); }; /** * Encodes the specified AuthorizationInfo message. Does not implicitly {@link AuthorizationInfo.verify|verify} messages. * @function encode * @memberof AuthorizationInfo * @static * @param {IAuthorizationInfo} message AuthorizationInfo message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ AuthorizationInfo.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.tcbCredentials != null && message.hasOwnProperty("tcbCredentials")) $root.AuthorizationInfo.TcbCredentials.encode(message.tcbCredentials, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.wxParam != null && message.hasOwnProperty("wxParam")) writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.wxParam); return writer; }; /** * Encodes the specified AuthorizationInfo message, length delimited. Does not implicitly {@link AuthorizationInfo.verify|verify} messages. * @function encodeDelimited * @memberof AuthorizationInfo * @static * @param {IAuthorizationInfo} message AuthorizationInfo message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ AuthorizationInfo.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes an AuthorizationInfo message from the specified reader or buffer. * @function decode * @memberof AuthorizationInfo * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {AuthorizationInfo} AuthorizationInfo * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ AuthorizationInfo.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.AuthorizationInfo(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.tcbCredentials = $root.AuthorizationInfo.TcbCredentials.decode(reader, reader.uint32()); break; case 2: message.wxParam = reader.bytes(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes an AuthorizationInfo message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof AuthorizationInfo * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {AuthorizationInfo} AuthorizationInfo * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ AuthorizationInfo.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies an AuthorizationInfo message. * @function verify * @memberof AuthorizationInfo * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ AuthorizationInfo.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.tcbCredentials != null && message.hasOwnProperty("tcbCredentials")) { var error = $root.AuthorizationInfo.TcbCredentials.verify(message.tcbCredentials); if (error) return "tcbCredentials." + error; } if (message.wxParam != null && message.hasOwnProperty("wxParam")) if (!(message.wxParam && typeof message.wxParam.length === "number" || $util.isString(message.wxParam))) return "wxParam: buffer expected"; return null; }; /** * Creates an AuthorizationInfo message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof AuthorizationInfo * @static * @param {Object.} object Plain object * @returns {AuthorizationInfo} AuthorizationInfo */ AuthorizationInfo.fromObject = function fromObject(object) { if (object instanceof $root.AuthorizationInfo) return object; var message = new $root.AuthorizationInfo(); if (object.tcbCredentials != null) { if (typeof object.tcbCredentials !== "object") throw TypeError(".AuthorizationInfo.tcbCredentials: object expected"); message.tcbCredentials = $root.AuthorizationInfo.TcbCredentials.fromObject(object.tcbCredentials); } if (object.wxParam != null) if (typeof object.wxParam === "string") $util.base64.decode(object.wxParam, message.wxParam = $util.newBuffer($util.base64.length(object.wxParam)), 0); else if (object.wxParam.length) message.wxParam = object.wxParam; return message; }; /** * Creates a plain object from an AuthorizationInfo message. Also converts values to other types if specified. * @function toObject * @memberof AuthorizationInfo * @static * @param {AuthorizationInfo} message AuthorizationInfo * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ AuthorizationInfo.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.tcbCredentials = null; if (options.bytes === String) object.wxParam = ""; else { object.wxParam = []; if (options.bytes !== Array) object.wxParam = $util.newBuffer(object.wxParam); } } if (message.tcbCredentials != null && message.hasOwnProperty("tcbCredentials")) object.tcbCredentials = $root.AuthorizationInfo.TcbCredentials.toObject(message.tcbCredentials, options); if (message.wxParam != null && message.hasOwnProperty("wxParam")) object.wxParam = options.bytes === String ? $util.base64.encode(message.wxParam, 0, message.wxParam.length) : options.bytes === Array ? Array.prototype.slice.call(message.wxParam) : message.wxParam; return object; }; /** * Converts this AuthorizationInfo to JSON. * @function toJSON * @memberof AuthorizationInfo * @instance * @returns {Object.} JSON object */ AuthorizationInfo.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; AuthorizationInfo.TcbCredentials = (function() { /** * Properties of a TcbCredentials. * @memberof AuthorizationInfo * @interface ITcbCredentials * @property {string|null} [secretId] TcbCredentials secretId * @property {string|null} [secretKey] TcbCredentials secretKey * @property {string|null} [token] TcbCredentials token */ /** * Constructs a new TcbCredentials. * @memberof AuthorizationInfo * @classdesc Represents a TcbCredentials. * @implements ITcbCredentials * @constructor * @param {AuthorizationInfo.ITcbCredentials=} [properties] Properties to set */ function TcbCredentials(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * TcbCredentials secretId. * @member {string} secretId * @memberof AuthorizationInfo.TcbCredentials * @instance */ TcbCredentials.prototype.secretId = ""; /** * TcbCredentials secretKey. * @member {string} secretKey * @memberof AuthorizationInfo.TcbCredentials * @instance */ TcbCredentials.prototype.secretKey = ""; /** * TcbCredentials token. * @member {string} token * @memberof AuthorizationInfo.TcbCredentials * @instance */ TcbCredentials.prototype.token = ""; /** * Creates a new TcbCredentials instance using the specified properties. * @function create * @memberof AuthorizationInfo.TcbCredentials * @static * @param {AuthorizationInfo.ITcbCredentials=} [properties] Properties to set * @returns {AuthorizationInfo.TcbCredentials} TcbCredentials instance */ TcbCredentials.create = function create(properties) { return new TcbCredentials(properties); }; /** * Encodes the specified TcbCredentials message. Does not implicitly {@link AuthorizationInfo.TcbCredentials.verify|verify} messages. * @function encode * @memberof AuthorizationInfo.TcbCredentials * @static * @param {AuthorizationInfo.ITcbCredentials} message TcbCredentials message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ TcbCredentials.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.secretId != null && message.hasOwnProperty("secretId")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.secretId); if (message.secretKey != null && message.hasOwnProperty("secretKey")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.secretKey); if (message.token != null && message.hasOwnProperty("token")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.token); return writer; }; /** * Encodes the specified TcbCredentials message, length delimited. Does not implicitly {@link AuthorizationInfo.TcbCredentials.verify|verify} messages. * @function encodeDelimited * @memberof AuthorizationInfo.TcbCredentials * @static * @param {AuthorizationInfo.ITcbCredentials} message TcbCredentials message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ TcbCredentials.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a TcbCredentials message from the specified reader or buffer. * @function decode * @memberof AuthorizationInfo.TcbCredentials * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {AuthorizationInfo.TcbCredentials} TcbCredentials * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ TcbCredentials.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.AuthorizationInfo.TcbCredentials(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.secretId = reader.string(); break; case 2: message.secretKey = reader.string(); break; case 3: message.token = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a TcbCredentials message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof AuthorizationInfo.TcbCredentials * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {AuthorizationInfo.TcbCredentials} TcbCredentials * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ TcbCredentials.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a TcbCredentials message. * @function verify * @memberof AuthorizationInfo.TcbCredentials * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ TcbCredentials.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.secretId != null && message.hasOwnProperty("secretId")) if (!$util.isString(message.secretId)) return "secretId: string expected"; if (message.secretKey != null && message.hasOwnProperty("secretKey")) if (!$util.isString(message.secretKey)) return "secretKey: string expected"; if (message.token != null && message.hasOwnProperty("token")) if (!$util.isString(message.token)) return "token: string expected"; return null; }; /** * Creates a TcbCredentials message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof AuthorizationInfo.TcbCredentials * @static * @param {Object.} object Plain object * @returns {AuthorizationInfo.TcbCredentials} TcbCredentials */ TcbCredentials.fromObject = function fromObject(object) { if (object instanceof $root.AuthorizationInfo.TcbCredentials) return object; var message = new $root.AuthorizationInfo.TcbCredentials(); if (object.secretId != null) message.secretId = String(object.secretId); if (object.secretKey != null) message.secretKey = String(object.secretKey); if (object.token != null) message.token = String(object.token); return message; }; /** * Creates a plain object from a TcbCredentials message. Also converts values to other types if specified. * @function toObject * @memberof AuthorizationInfo.TcbCredentials * @static * @param {AuthorizationInfo.TcbCredentials} message TcbCredentials * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ TcbCredentials.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { object.secretId = ""; object.secretKey = ""; object.token = ""; } if (message.secretId != null && message.hasOwnProperty("secretId")) object.secretId = message.secretId; if (message.secretKey != null && message.hasOwnProperty("secretKey")) object.secretKey = message.secretKey; if (message.token != null && message.hasOwnProperty("token")) object.token = message.token; return object; }; /** * Converts this TcbCredentials to JSON. * @function toJSON * @memberof AuthorizationInfo.TcbCredentials * @instance * @returns {Object.} JSON object */ TcbCredentials.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return TcbCredentials; })(); AuthorizationInfo.WxParam = (function() { /** * Properties of a WxParam. * @memberof AuthorizationInfo * @interface IWxParam * @property {Uint8Array|null} [qbaseTicket] WxParam qbaseTicket * @property {string|null} [authUin] WxParam authUin * @property {string|null} [extJson] WxParam extJson */ /** * Constructs a new WxParam. * @memberof AuthorizationInfo * @classdesc Represents a WxParam. * @implements IWxParam * @constructor * @param {AuthorizationInfo.IWxParam=} [properties] Properties to set */ function WxParam(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * WxParam qbaseTicket. * @member {Uint8Array} qbaseTicket * @memberof AuthorizationInfo.WxParam * @instance */ WxParam.prototype.qbaseTicket = $util.newBuffer([]); /** * WxParam authUin. * @member {string} authUin * @memberof AuthorizationInfo.WxParam * @instance */ WxParam.prototype.authUin = ""; /** * WxParam extJson. * @member {string} extJson * @memberof AuthorizationInfo.WxParam * @instance */ WxParam.prototype.extJson = ""; /** * Creates a new WxParam instance using the specified properties. * @function create * @memberof AuthorizationInfo.WxParam * @static * @param {AuthorizationInfo.IWxParam=} [properties] Properties to set * @returns {AuthorizationInfo.WxParam} WxParam instance */ WxParam.create = function create(properties) { return new WxParam(properties); }; /** * Encodes the specified WxParam message. Does not implicitly {@link AuthorizationInfo.WxParam.verify|verify} messages. * @function encode * @memberof AuthorizationInfo.WxParam * @static * @param {AuthorizationInfo.IWxParam} message WxParam message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ WxParam.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.qbaseTicket != null && message.hasOwnProperty("qbaseTicket")) writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.qbaseTicket); if (message.authUin != null && message.hasOwnProperty("authUin")) writer.uint32(/* id 2, wireType 2 =*/18).string(message.authUin); if (message.extJson != null && message.hasOwnProperty("extJson")) writer.uint32(/* id 3, wireType 2 =*/26).string(message.extJson); return writer; }; /** * Encodes the specified WxParam message, length delimited. Does not implicitly {@link AuthorizationInfo.WxParam.verify|verify} messages. * @function encodeDelimited * @memberof AuthorizationInfo.WxParam * @static * @param {AuthorizationInfo.IWxParam} message WxParam message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ WxParam.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes a WxParam message from the specified reader or buffer. * @function decode * @memberof AuthorizationInfo.WxParam * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {AuthorizationInfo.WxParam} WxParam * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ WxParam.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.AuthorizationInfo.WxParam(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.qbaseTicket = reader.bytes(); break; case 2: message.authUin = reader.string(); break; case 3: message.extJson = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes a WxParam message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof AuthorizationInfo.WxParam * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {AuthorizationInfo.WxParam} WxParam * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ WxParam.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies a WxParam message. * @function verify * @memberof AuthorizationInfo.WxParam * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ WxParam.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.qbaseTicket != null && message.hasOwnProperty("qbaseTicket")) if (!(message.qbaseTicket && typeof message.qbaseTicket.length === "number" || $util.isString(message.qbaseTicket))) return "qbaseTicket: buffer expected"; if (message.authUin != null && message.hasOwnProperty("authUin")) if (!$util.isString(message.authUin)) return "authUin: string expected"; if (message.extJson != null && message.hasOwnProperty("extJson")) if (!$util.isString(message.extJson)) return "extJson: string expected"; return null; }; /** * Creates a WxParam message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof AuthorizationInfo.WxParam * @static * @param {Object.} object Plain object * @returns {AuthorizationInfo.WxParam} WxParam */ WxParam.fromObject = function fromObject(object) { if (object instanceof $root.AuthorizationInfo.WxParam) return object; var message = new $root.AuthorizationInfo.WxParam(); if (object.qbaseTicket != null) if (typeof object.qbaseTicket === "string") $util.base64.decode(object.qbaseTicket, message.qbaseTicket = $util.newBuffer($util.base64.length(object.qbaseTicket)), 0); else if (object.qbaseTicket.length) message.qbaseTicket = object.qbaseTicket; if (object.authUin != null) message.authUin = String(object.authUin); if (object.extJson != null) message.extJson = String(object.extJson); return message; }; /** * Creates a plain object from a WxParam message. Also converts values to other types if specified. * @function toObject * @memberof AuthorizationInfo.WxParam * @static * @param {AuthorizationInfo.WxParam} message WxParam * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ WxParam.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { if (options.bytes === String) object.qbaseTicket = ""; else { object.qbaseTicket = []; if (options.bytes !== Array) object.qbaseTicket = $util.newBuffer(object.qbaseTicket); } object.authUin = ""; object.extJson = ""; } if (message.qbaseTicket != null && message.hasOwnProperty("qbaseTicket")) object.qbaseTicket = options.bytes === String ? $util.base64.encode(message.qbaseTicket, 0, message.qbaseTicket.length) : options.bytes === Array ? Array.prototype.slice.call(message.qbaseTicket) : message.qbaseTicket; if (message.authUin != null && message.hasOwnProperty("authUin")) object.authUin = message.authUin; if (message.extJson != null && message.hasOwnProperty("extJson")) object.extJson = message.extJson; return object; }; /** * Converts this WxParam to JSON. * @function toJSON * @memberof AuthorizationInfo.WxParam * @instance * @returns {Object.} JSON object */ WxParam.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return WxParam; })(); return AuthorizationInfo; })(); $root.ApiOptions = (function() { /** * Properties of an ApiOptions. * @exports IApiOptions * @interface IApiOptions * @property {string|null} [appid] ApiOptions appid */ /** * Constructs a new ApiOptions. * @exports ApiOptions * @classdesc Represents an ApiOptions. * @implements IApiOptions * @constructor * @param {IApiOptions=} [properties] Properties to set */ function ApiOptions(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]; } /** * ApiOptions appid. * @member {string} appid * @memberof ApiOptions * @instance */ ApiOptions.prototype.appid = ""; /** * Creates a new ApiOptions instance using the specified properties. * @function create * @memberof ApiOptions * @static * @param {IApiOptions=} [properties] Properties to set * @returns {ApiOptions} ApiOptions instance */ ApiOptions.create = function create(properties) { return new ApiOptions(properties); }; /** * Encodes the specified ApiOptions message. Does not implicitly {@link ApiOptions.verify|verify} messages. * @function encode * @memberof ApiOptions * @static * @param {IApiOptions} message ApiOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ApiOptions.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); if (message.appid != null && message.hasOwnProperty("appid")) writer.uint32(/* id 1, wireType 2 =*/10).string(message.appid); return writer; }; /** * Encodes the specified ApiOptions message, length delimited. Does not implicitly {@link ApiOptions.verify|verify} messages. * @function encodeDelimited * @memberof ApiOptions * @static * @param {IApiOptions} message ApiOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ ApiOptions.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** * Decodes an ApiOptions message from the specified reader or buffer. * @function decode * @memberof ApiOptions * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand * @returns {ApiOptions} ApiOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ApiOptions.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ApiOptions(); while (reader.pos < end) { var tag = reader.uint32(); switch (tag >>> 3) { case 1: message.appid = reader.string(); break; default: reader.skipType(tag & 7); break; } } return message; }; /** * Decodes an ApiOptions message from the specified reader or buffer, length delimited. * @function decodeDelimited * @memberof ApiOptions * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @returns {ApiOptions} ApiOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ ApiOptions.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** * Verifies an ApiOptions message. * @function verify * @memberof ApiOptions * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ ApiOptions.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; if (message.appid != null && message.hasOwnProperty("appid")) if (!$util.isString(message.appid)) return "appid: string expected"; return null; }; /** * Creates an ApiOptions message from a plain object. Also converts values to their respective internal types. * @function fromObject * @memberof ApiOptions * @static * @param {Object.} object Plain object * @returns {ApiOptions} ApiOptions */ ApiOptions.fromObject = function fromObject(object) { if (object instanceof $root.ApiOptions) return object; var message = new $root.ApiOptions(); if (object.appid != null) message.appid = String(object.appid); return message; }; /** * Creates a plain object from an ApiOptions message. Also converts values to other types if specified. * @function toObject * @memberof ApiOptions * @static * @param {ApiOptions} message ApiOptions * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ ApiOptions.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) object.appid = ""; if (message.appid != null && message.hasOwnProperty("appid")) object.appid = message.appid; return object; }; /** * Converts this ApiOptions to JSON. * @function toJSON * @memberof ApiOptions * @instance * @returns {Object.} JSON object */ ApiOptions.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; return ApiOptions; })(); module.exports = $root; /***/ }), /***/ "./src/utils/assert.ts": /*!*****************************!*\ !*** ./src/utils/assert.ts ***! \*****************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.assertObjectNotEmpty = exports.assertRequiredParam = exports.assertObjectOptionalType = exports.assertType = exports.validObjectOptionalType = exports.validType = exports.sameType = void 0; const type_1 = __webpack_require__(/*! ./type */ "./src/utils/type.ts"); const error_1 = __webpack_require__(/*! ./error */ "./src/utils/error.ts"); const error_config_1 = __webpack_require__(/*! config/error.config */ "./src/config/error.config.ts"); function sameType(input, ref, name) { function sameTypeImpl(input, ref, name) { const inputType = type_1.getType(input); const refType = type_1.getType(ref); if (inputType !== refType) { return `${name} should be ${refType} instead of ${inputType}; `; } let errors = ''; switch (inputType) { case 'object': { for (const key in ref) { errors += sameTypeImpl(input[key], ref[key], `${name}.${key}`); } break; } case 'array': { for (let i = 0; i < ref.length; i++) { errors += sameTypeImpl(input[i], ref[i], `${name}[${i}]`); } break; } default: { break; } } return errors; } const error = sameTypeImpl(input, ref, name); return { passed: !error, reason: error, }; } exports.sameType = sameType; function validType(input, ref, name = 'parameter') { function validTypeImpl(input, ref, name) { const inputType = type_1.getType(input); const refType = type_1.getType(ref); if (refType === 'string') { if (inputType !== ref) { return `${name} should be ${ref} instead of ${inputType};`; } return ''; } else { if (inputType !== refType) { return `${name} should be ${refType} instead of ${inputType}; `; } let errors = ''; switch (inputType) { case 'object': { for (const key in ref) { errors += validTypeImpl(input[key], ref[key], `${name}.${key}`); } break; } case 'array': { for (let i = 0; i < ref.length; i++) { errors += validTypeImpl(input[i], ref[i], `${name}[${i}]`); } break; } default: { break; } } return errors; } } const error = validTypeImpl(input, ref, name); return { passed: !error, reason: error, }; } exports.validType = validType; function validObjectOptionalType(input, ref, name = 'parameter') { function validImpl(input, ref, name) { const inputType = type_1.getType(input); const refType = type_1.getType(ref); if (refType !== 'object') return ''; if (inputType === 'object') { for (const key in input) { const val = input[key]; if (val === undefined || key === null) { continue; } const assertResult = validType(val, ref[key], `${name}.${key}`); return assertResult.passed ? '' : assertResult.reason; } } else { return `${name} should be object instead of ${inputType}`; } return ''; } const error = validImpl(input, ref, name); return { passed: !error, reason: error, }; } exports.validObjectOptionalType = validObjectOptionalType; function assertType(param, ref, name = 'parameter', ErrorClass = error_1.CloudSDKError) { // check param validity let paramCheckResult = validType(param, ref, name); if (!paramCheckResult.passed) { throw new ErrorClass({ errMsg: paramCheckResult.reason, }); } } exports.assertType = assertType; function assertObjectOptionalType(param, ref, name = 'parameter', ErrorClass = error_1.CloudSDKError) { // check param validity let paramCheckResult = validObjectOptionalType(param, ref, name); if (!paramCheckResult.passed) { throw new ErrorClass({ errMsg: paramCheckResult.reason, }); } } exports.assertObjectOptionalType = assertObjectOptionalType; function assertRequiredParam(param, name, funcName, ErrorClass = error_1.CloudSDKError) { if (param === undefined || param === null) { throw new ErrorClass({ errMsg: `parameter ${name} of function ${funcName} must be provided`, }); } } exports.assertRequiredParam = assertRequiredParam; function assertObjectNotEmpty({ target, name, ErrorClass = error_1.CloudSDKError }) { if (Object.keys(target).length === 0) { throw new ErrorClass({ errCode: error_config_1.ERR_CODE.SDK_API_PARAMETER_ERROR, errMsg: `${name} must not be empty` }); } } exports.assertObjectNotEmpty = assertObjectNotEmpty; /* export function constructTypeRef(typeDef: any): any { const type = getType(typeDef) switch(type) { case 'string': { return '' } case 'number': { } } } */ /***/ }), /***/ "./src/utils/error.ts": /*!****************************!*\ !*** ./src/utils/error.ts ***! \****************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.toSDKError = exports.returnAsFinalCloudSDKError = exports.returnAsCloudSDKError = exports.isSDKError = exports.createError = exports.CloudSDKError = void 0; const type_1 = __webpack_require__(/*! ./type */ "./src/utils/type.ts"); const error_config_1 = __webpack_require__(/*! config/error.config */ "./src/config/error.config.ts"); /** * @deprecated */ class CloudSDKError extends Error { constructor(options) { super(options.errMsg); this.errCode = -1; Object.defineProperties(this, { message: { get() { return `errCode: ${this.errCode} ${error_config_1.ERR_CODE[this.errCode] || ''} | errMsg: ` + this.errMsg; }, set(msg) { this.errMsg = msg; } } }); this.errCode = options.errCode || -1; this.errMsg = options.errMsg; } get message() { return `errCode: ${this.errCode} | errMsg: ` + this.errMsg; } set message(msg) { this.errMsg = msg; } } exports.CloudSDKError = CloudSDKError; /** * @deprecated */ function createError({ errCode = 1, errMsg = '', errClass = CloudSDKError, } = {}) { return new errClass({ errCode, errMsg, }); } exports.createError = createError; function isSDKError(error) { return error && (error instanceof Error) && type_1.isString(error.errMsg); } exports.isSDKError = isSDKError; /** * @deprecated */ function returnAsCloudSDKError(err, appendMsg = '') { if (err) { if (isSDKError(err)) { if (appendMsg) { err.errMsg += '; ' + appendMsg; } return err; } const errCode = err ? err.errCode : undefined; const errMsg = (err && err.errMsg || err.toString() || 'unknown error') + '; ' + appendMsg; return new CloudSDKError({ errCode, errMsg, }); } return new CloudSDKError({ errMsg: appendMsg }); } exports.returnAsCloudSDKError = returnAsCloudSDKError; /** * @deprecated */ function returnAsFinalCloudSDKError(err, apiName) { return toSDKError(err, apiName); // if (err && isSDKError(err)) { // return err // } // const e = returnAsCloudSDKError(err, `at ${apiName} api; `) // e.errMsg = apiFailMsg(apiName, e.errMsg) // return e } exports.returnAsFinalCloudSDKError = returnAsFinalCloudSDKError; function toSDKError(e, apiName) { if (e) { if (isSDKError(e)) { return e; } const prefix = `${apiName}:fail `; let err; if (e instanceof Error) { e.message = `${prefix}${e.message}`; e.stack = e.stack.slice(0, 7) + prefix + e.stack.slice(7); err = e; err.errCode = -1; } else if (typeof e === 'string') { err = new Error(`${prefix}${e}`); err.errCode = -1; } else { // errCode + errMsg const errMsg = e.errMsg || ''; err = new Error(`${apiName}:fail ${e.errCode} ${error_config_1.ERR_CODE[e.errCode] || ''}. ${errMsg}`); err.errCode = e.errCode || -1; } err.errMsg = err.message + ''; return err; } const err = new Error(`${apiName}:fail`); err.errCode = -1; err.errMsg = err.message + ''; return err; } exports.toSDKError = toSDKError; /***/ }), /***/ "./src/utils/msg.ts": /*!**************************!*\ !*** ./src/utils/msg.ts ***! \**************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.apiFailMsg = exports.apiCancelMsg = exports.apiSuccessMsg = void 0; function apiSuccessMsg(apiName) { return `${apiName}:ok`; } exports.apiSuccessMsg = apiSuccessMsg; function apiCancelMsg(apiName, msg) { return `${apiName}:cancel ${msg}`; } exports.apiCancelMsg = apiCancelMsg; function apiFailMsg(apiName, msg) { return `${apiName}:fail ${msg}`; } exports.apiFailMsg = apiFailMsg; /***/ }), /***/ "./src/utils/symbol.ts": /*!*****************************!*\ !*** ./src/utils/symbol.ts ***! \*****************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.InternalSymbol = void 0; const _symbols = []; const __internalMark__ = {}; class HiddenSymbol { constructor(target) { Object.defineProperties(this, { target: { enumerable: false, writable: false, configurable: false, value: target, }, }); } } class InternalSymbol extends HiddenSymbol { constructor(target, __mark__) { if (__mark__ !== __internalMark__) { throw new TypeError('InternalSymbol cannot be constructed with new operator'); } super(target); } static for(target) { for (let i = 0, len = _symbols.length; i < len; i++) { if (_symbols[i].target === target) { return _symbols[i].instance; } } const symbol = new InternalSymbol(target, __internalMark__); _symbols.push({ target, instance: symbol, }); return symbol; } } exports.InternalSymbol = InternalSymbol; exports.default = InternalSymbol; /***/ }), /***/ "./src/utils/type.ts": /*!***************************!*\ !*** ./src/utils/type.ts ***! \***************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isPlainObject = exports.isInternalObject = exports.isBuffer = exports.isDate = exports.isArray = exports.isFunction = exports.isPromise = exports.isNumber = exports.isString = exports.isObject = exports.getType = void 0; const symbol_1 = __webpack_require__(/*! ./symbol */ "./src/utils/symbol.ts"); exports.getType = (x) => Object.prototype.toString.call(x).slice(8, -1).toLowerCase(); exports.isObject = (x) => exports.getType(x) === 'object'; exports.isString = (x) => exports.getType(x) === 'string'; exports.isNumber = (x) => exports.getType(x) === 'number'; exports.isPromise = (x) => exports.getType(x) === 'promise'; exports.isFunction = (x) => typeof x === 'function'; exports.isArray = (x) => Array.isArray(x); exports.isDate = (x) => exports.getType(x) === 'date'; exports.isBuffer = (x) => Buffer.isBuffer(x); exports.isInternalObject = (x) => x && (x._internalType instanceof symbol_1.InternalSymbol); exports.isPlainObject = (obj) => { if (typeof obj !== 'object' || obj === null) return false; let proto = obj; while (Object.getPrototypeOf(proto) !== null) { proto = Object.getPrototypeOf(proto); } return Object.getPrototypeOf(obj) === proto; }; /***/ }), /***/ "./src/utils/utils.ts": /*!****************************!*\ !*** ./src/utils/utils.ts ***! \****************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getMergedAPIConfig = exports.getServiceConfigFromDefaultConfig = exports.getEnvFromAPIConfig = exports.getEnvFromCloudConfig = exports.isSCFEnvReady = exports.convertCase = void 0; const type_1 = __webpack_require__(/*! ./type */ "./src/utils/type.ts"); const signature_1 = __webpack_require__(/*! api/utils/api/signature */ "./src/api/utils/api/signature.ts"); const ignoreInConvert = (input) => input instanceof signature_1.MidasSignature; exports.convertCase = (input, options) => { const { from, to, recursive } = options; if (type_1.isString(input)) { if (from === 'camelcase' && to === 'snakecase') { return input.replace(/[A-Z]/g, (match, ind) => `${ind ? '_' : ''}${match.toLowerCase()}`); } else if (from === 'snakecase' && to === 'camelcase') { return input.replace(/_[a-z]/g, (match, ind) => `${match[1].toUpperCase()}`); } } else if (type_1.isObject(input)) { return ignoreInConvert(input) ? input : convertObject(input); } else if (type_1.isArray(input)) { const array = []; for (const item of input) { if (type_1.isObject(item)) { array.push(convertObject(item)); } else if (type_1.isArray(item)) { if (options.recursive) { array.push(exports.convertCase(item, options)); } else { array.push(item); } } else { array.push(item); } } return array; } else return input; function convertObject(input) { const data = Object.assign({}, input); for (const key in data) { const val = recursive && (type_1.isObject(data[key]) || type_1.isArray(data[key])) ? exports.convertCase(data[key], options) : data[key]; const convertedKey = exports.convertCase(key, options); data[convertedKey] = val; if (convertedKey !== key) { delete data[key]; } } return data; } }; exports.isSCFEnvReady = () => Boolean(process.env.TCB_ENV); exports.getEnvFromCloudConfig = (config, serviceName = 'default') => { const env = config.env[serviceName] || config.env.default; return env; }; exports.getEnvFromAPIConfig = (apiConfig, cloudConfig, serviceName = 'default') => { if (apiConfig && apiConfig.env) { return apiConfig.env; } return exports.getEnvFromCloudConfig(cloudConfig, serviceName); }; exports.getServiceConfigFromDefaultConfig = (defaultConfig, serviceName = 'default') => { return Object.assign(Object.assign({}, defaultConfig), { env: exports.getEnvFromCloudConfig(defaultConfig, serviceName) }); }; exports.getMergedAPIConfig = (defaultConfig, newConfig, serviceName = 'default') => { const merged = Object.assign(Object.assign({}, defaultConfig), newConfig); if (newConfig && newConfig.env) { merged.env = newConfig.env; } else { merged.env = exports.getEnvFromCloudConfig(defaultConfig, serviceName); } return merged; }; /***/ }), /***/ "crypto": /*!*************************!*\ !*** external "crypto" ***! \*************************/ /*! no static exports found */ /***/ (function(module, exports) { module.exports = require("crypto"); /***/ }), /***/ "protobufjs/minimal": /*!*************************************!*\ !*** external "protobufjs/minimal" ***! \*************************************/ /*! no static exports found */ /***/ (function(module, exports) { module.exports = require("protobufjs/minimal"); /***/ }) /******/ }); ================================================ FILE: cloudfunctions/ARDemo/wx-server-sdk-wxg-service/package.json ================================================ { "name": "@tencent/wx-server-sdk-wxg-service", "version": "0.7.0", "description": "wxg service plugin for mini program cloud server sdk", "main": "index.js", "author": "wechat mini program team", "license": "MIT", "dependencies": { "tslib": "^1.9.3" } } ================================================ FILE: cloudfunctions/getServerDataDemo/index.js ================================================ // 云函数入口文件 const cloud = require('wx-server-sdk') // 云函数入口函数 exports.main = async () => { cloud.init({ env: process.env.TCB_ENV, }) const db = cloud.database() return db.collection('perm4').where({ _openid: 'server' }).limit(1).get() } ================================================ FILE: cloudfunctions/getServerDataDemo/package.json ================================================ { "name": "getServerDataDemo", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "wx-server-sdk": "latest" } } ================================================ FILE: cloudfunctions/getTempFileURL/index.js ================================================ // 云函数入口文件 const cloud = require('wx-server-sdk') // 云函数入口函数 exports.main = async (event) => { cloud.init({ env: process.env.TCB_ENV, }) const fileList = event.fileIdList const result = await cloud.getTempFileURL({ fileList, }) return result.fileList } ================================================ FILE: cloudfunctions/getTempFileURL/package.json ================================================ { "name": "getTempFileURL", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "wx-server-sdk": "latest" } } ================================================ FILE: cloudfunctions/login/index.js ================================================ exports.main = (event) => ({ openid: event.userInfo.openId, }) ================================================ FILE: cloudfunctions/login/package.json ================================================ { "name": "login", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "wx-server-sdk": "latest" } } ================================================ FILE: gulpfile.js ================================================ const fs = require('fs') const gulp = require('gulp') const postcss = require('gulp-postcss') const cssvars = require('postcss-css-variables') const rename = require('gulp-rename') const replace = require('gulp-replace') const gulpIf = require('gulp-if') const gulpIgnore = require('gulp-ignore') gulp.task('transform-css-vars', () => { const plugins = [ cssvars({ preserve: false, variables: { '--weui-BTN-DISABLED-FONT-COLOR': 'rgba(0, 0, 0, .2)', '--weui-BTN-DEFAULT-BG': '#f2f2f2', '--weui-BTN-DEFAULT-COLOR': '#06ae56', '--weui-BTN-DEFAULT-ACTIVE-BG': '#e6e6e6', '--weui-DIALOG-LINE-COLOR': 'rgba(0, 0, 0, .1)', '--weui-BG-0': '#ededed', '--weui-BG-1': '#f7f7f7', '--weui-BG-2': '#fff', '--weui-BG-3': '#f7f7f7', '--weui-BG-4': '#4c4c4c', '--weui-BG-5': '#fff', '--weui-FG-0': 'rgba(0, 0, 0, .9)', '--weui-FG-HALF': 'rgba(0, 0, 0, .9)', '--weui-FG-1': 'rgba(0, 0, 0, .5)', '--weui-FG-2': 'rgba(0, 0, 0, .3)', '--weui-FG-3': 'rgba(0, 0, 0, .1)', '--weui-RED': '#fa5151', '--weui-ORANGE': '#fa9d3b', '--weui-YELLOW': '#ffc300', '--weui-GREEN': '#91d300', '--weui-LIGHTGREEN': '#95ec69', '--weui-BRAND': '#07c160', '--weui-BLUE': '#10aeff', '--weui-INDIGO': '#1485ee', '--weui-PURPLE': '#6467f0', '--weui-WHITE': '#fff', '--weui-LINK': '#576b95', '--weui-TEXTGREEN': '#06ae56', '--weui-FG': '#000', '--weui-BG': '#fff', '--weui-TAG-TEXT-ORANGE': '#fa9d3b', '--weui-TAG-BACKGROUND-ORANGE': 'rgba(250, 157, 59, .1)', '--weui-TAG-TEXT-GREEN': '#06ae56', '--weui-TAG-BACKGROUND-GREEN': 'rgba(6, 174, 86, .1)', '--weui-TAG-TEXT-BLUE': '#10aeff', '--weui-TAG-BACKGROUND-BLUE': 'rgba(16, 174, 255, .1)', '--weui-TAG-TEXT-BLACK': 'rgba(0, 0, 0, .5)', '--weui-TAG-BACKGROUND-BLACK': 'rgba(0, 0, 0, .05)', '--weui-BG-COLOR-ACTIVE': '#ececec', '--height': '44px', '--right': '95px', }, preserveInjectedVariables: false, }) ] return gulp.src([ './miniprogram/app.wxss', './miniprogram/common/common.wxss', './miniprogram/page/common/common.wxss', './miniprogram/page/common/index.wxss', './miniprogram/page/component/index.wxss', './miniprogram/page/cloud/index.wxss', './miniprogram/page/API/index.wxss', './miniprogram/page/extend/index.wxss', './miniprogram/packageComponent/pages/canvas/canvas-2d/canvas-2d.wxss', ]) .pipe(gulpIgnore.exclude( file => { try { fs.accessSync(file.path.replace(/\.wxss$/, '-skyline.wxss')) } catch (e) { return false } return true } )) .pipe(postcss(plugins)) .pipe(replace(/\:root ?{}\n/g, '')) .pipe(gulpIf(file => file.path.includes('miniprogram/page/common'), rename({ suffix: '-skyline' }))) .pipe(gulpIf(file => file.path.includes('miniprogram/common'), rename({ suffix: '-skyline' }))) .pipe(gulp.dest(file => file.base)) }) ================================================ FILE: miniprogram/_commons/0.js ================================================ var globalThis = this, self = this; module.exports = /******/ (function(modules) { // webpackBootstrap /******/ function webpackLoadCallback(loadModules) { /******/ var i = 0, j, k = 0; /******/ var deferredModules = [], result; /******/ var module, chunkIds, chunkId, moreModules, executeModules, moduleId; /******/ var deferredModule, fulfilled, depId; /******/ /******/ for (; i < loadModules.length; ++i) { /******/ module = loadModules[i]; /******/ chunkIds = module.ids; /******/ moreModules = module.modules; /******/ executeModules = module.entries || []; /******/ /******/ for(j = 0; j < chunkIds.length; j++) { /******/ chunkId = chunkIds[j]; /******/ installedChunks[chunkId] = 0; /******/ } /******/ for(moduleId in moreModules) { /******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { /******/ modules[moduleId] = moreModules[moduleId]; /******/ } /******/ } /******/ /******/ deferredModules.push.apply(deferredModules, executeModules || []); /******/ } /******/ /******/ for(; k < deferredModules.length; k++) { /******/ deferredModule = deferredModules[k]; /******/ fulfilled = true; /******/ for(j = 1; j < deferredModule.length; j++) { /******/ depId = deferredModule[j]; /******/ if(installedChunks[depId] !== 0) fulfilled = false; /******/ } /******/ if(fulfilled) { /******/ deferredModules.splice(k--, 1); /******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]); /******/ } /******/ } /******/ /******/ return result; /******/ }; /******/ /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // object to store loaded chunks /******/ // "0" means "already loaded" /******/ var installedChunks = { /******/ 0: 0 /******/ }; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // uncaught error handler for webpack runtime /******/ __webpack_require__.oe = function(err) { /******/ process.nextTick(function() { /******/ throw err; // catch this error by using import().catch() /******/ }); /******/ }; /******/ /******/ /******/ // return load module function /******/ return webpackLoadCallback; /******/ }) /************************************************************************/ /******/ ([]); // # sourceMappingURL=0.js.map ================================================ FILE: miniprogram/app-bar/index.js ================================================ // components/app-bar/index.js Component({ properties: { }, data: { showAppbar: false } }) ================================================ FILE: miniprogram/app-bar/index.json ================================================ { "component": true, "usingComponents": { "app-bar-course": "../components/app-bar-course" } } ================================================ FILE: miniprogram/app-bar/index.wxml ================================================ ================================================ FILE: miniprogram/app-bar/index.wxss ================================================ .expand-container { position: absolute; top: 0; right: 0; bottom: 0; left: 0; padding: 0 24px; padding-bottom: env(safe-area-inset-bottom); pointer-events: auto; overflow: hidden; background-color: #e9f8f7; color: #7e8081; } .hide { display: none; } .nav-bar { overflow: hidden; box-sizing: border-box; } .icon--back { width: 30px; height: 30px; } .title { margin-left: 10px; min-width: 160px; flex: 1; } .title .name { margin-top: 4px; font-size: 12px; } .title-wrap { flex: 1; min-width: 240px; } .footer { padding: 0 24px; } .footer .icon { width: 40px; height: 40px; } .expand-cover { width: 100%; height: 100%; } .music-title { margin-top: 48px; font-size: 20px; font-weight: bold; color: #07c160; } .music-title .name { margin-top: 12px; font-size: 14px; font-weight: 200; color: #b1b2b3; } .cover-area { margin: 8px 0; width: 100%; aspect-ratio: 1 / 1; overflow: hidden; } .cover { /* aspect-ratio: 1 / 1; */ flex-shrink: 0; } .icon { width: 18px; height: 18px; } .row { display: flex; flex-direction: row; align-items: center; } .row-between { display: flex; flex-direction: row; justify-content: space-between; align-items: center; } .column { display: flex; flex-direction: column; } .column-main-center { display: flex; flex-direction: column; justify-content: center; } .column-cross-center { display: flex; flex-direction: column; align-items: center; } .center { display: flex; align-items: center; justify-content: center; } .circle { width: 100%; height: 100%; overflow: hidden; border-radius: 50%; } ================================================ FILE: miniprogram/app-darkmode.json ================================================ { "window": { "navigationBarTextStyle": "white", "navigationBarBackgroundColor": "#191919", "backgroundColor": "#191919" }, "tabBar": { "color": "#FCFCFC", "selectedColor": "#51A937", "borderStyle": "white", "backgroundColor": "#191919", "list": [ { "pagePath": "page/component/index", "iconPath": "image/icon_component_HL.png", "selectedIconPath": "image/icon_component_dark.png", "text": "组件" }, { "pagePath": "page/extend/index", "iconPath": "image/icon_component_HL.png", "selectedIconPath": "image/icon_component_dark.png", "text": "扩展能力" }, { "pagePath": "page/API/index", "iconPath": "image/icon_API_HL.png", "selectedIconPath": "image/icon_API_dark.png", "text": "接口" }, { "pagePath": "page/cloud/index", "iconPath": "image/icon_cloud_HL.png", "selectedIconPath": "image/icon_cloud_dark.png", "text": "云开发" } ] } } ================================================ FILE: miniprogram/app.js ================================================ const config = require('./config') const themeListeners = [] global.isDemo = true App({ onLaunch(opts, data) { const that = this const canIUseSetBackgroundFetchToken = wx.canIUse('setBackgroundFetchToken') if (canIUseSetBackgroundFetchToken) { wx.setBackgroundFetchToken({ token: 'getBackgroundFetchToken', }) } if (wx.getBackgroundFetchData) { wx.getBackgroundFetchData({ fetchType: 'pre', success(res) { that.globalData.backgroundFetchData = res console.log('读取预拉取数据成功', res) }, fail() { console.log('读取预拉取数据失败') wx.showToast({ title: '无缓存数据', icon: 'none' }) }, complete() { console.log('结束读取') } }) } console.log('App Launch', opts) if (data && data.path) { wx.navigateTo({ url: data.path, }) } if (!wx.cloud) { console.error('请使用 2.2.3 或以上的基础库以使用云能力') } else { wx.cloud.init({ env: config.envId, traceUser: true, }) } const getSystemInfo = [ 'getSystemSetting', 'getAppAuthorizeSetting', 'getDeviceInfo', 'getAppBaseInfo', 'getWindowInfo' ] getSystemInfo.forEach(apiName => { if (wx[apiName]) { Object.assign(this.globalData, wx[apiName]()) } }) // eslint-disable-next-line promise/always-return require.async('./packageSkyline/common/custom-route/index.js').then(utils => { console.log('--------begin installRouteBuilder') utils.installRouteBuilder() // 'common' }).catch(({ mod, errMsg }) => { console.error(`installRouteBuilder path: ${mod}, ${errMsg}`) }) }, onShow(opts) { console.log('App Show', opts) console.log('USER_DATA_PATH', wx.env.USER_DATA_PATH) // console.log(wx.getSystemInfoSync()) }, onHide() { console.log('App Hide') }, onThemeChange({ theme }) { this.globalData.theme = theme themeListeners.forEach((listener) => { listener(theme) }) }, watchThemeChange(listener) { if (themeListeners.indexOf(listener) < 0) { themeListeners.push(listener) } }, unWatchThemeChange(listener) { const index = themeListeners.indexOf(listener) if (index > -1) { themeListeners.splice(index, 1) } }, globalData: { theme: wx.getAppBaseInfo().theme, hasLogin: false, openid: null, iconTabbar: '/page/extend/images/icon_tabbar.png', systemInfo: {} }, // lazy loading openid getUserOpenId(callback) { const self = this if (self.globalData.openid) { callback(null, self.globalData.openid) } else { wx.login({ success() { wx.cloud.callFunction({ name: 'login', data: { action: 'openid' }, success: res => { console.log('拉取openid成功', res) self.globalData.openid = res.result.openid callback(null, self.globalData.openid) }, fail: err => { console.log('拉取用户openid失败,将无法正常使用开放接口等服务', err) callback(err) } }) }, fail(err) { console.log('wx.login 接口调用失败,将无法正常使用开放接口等服务', err) callback(err) } }) } }, // 通过云函数获取用户 openid,支持回调或 Promise getUserOpenIdViaCloud() { return wx.cloud.callFunction({ name: 'wxContext', data: {} }).then(res => { this.globalData.openid = res.result.openid return res.result.openid }) } }) ================================================ FILE: miniprogram/app.json ================================================ { "pages": [ "page/component/index", "page/API/index", "page/cloud/index", "page/extend/index", "page/animation/index", "page/ad/index", "page/ad/smart-ad/smart-ad", "page/ad/smart-ad/example1/example1", "page/ad/smart-ad/example2/example2", "page/ad/smart-ad/example3/example3", "page/ad/optimize-ad/optimize-ad", "page/ad/optimize-ad/home-small-card/home-small-card", "page/ad/optimize-ad/home-large-card/home-large-card", "page/ad/optimize-ad/other-small-card/other-small-card", "page/ad/optimize-ad/other-large-card/other-large-card" ], "usingComponents": { "mp-navigation-bar": "/component/navigation-bar/navigation-bar" }, "chatTools": [ { "root": "packageChatTool", "entryPagePath": "pages/activity_create/index", "desc": "群签到工具", "scopes": [ "scope.userLocation" ] } ], "subpackages": [ { "root": "packageChatTool", "pages": [ "pages/activity_detail/index", "pages/activity_create/index" ], "entry": "entry.js", "independent": true, "renderer": "skyline" }, { "root": "packageComponent", "pages": [ "pages/view/view/view", "pages/view/scroll-view/scroll-view", "pages/view/swiper/swiper", "pages/view/root-portal/root-portal", "pages/view/grid-view/grid-view", "pages/view/grid-view/demo-1/demo-1", "pages/view/grid-view/demo-2/demo-2", "pages/view/sticky/sticky-header/sticky-header", "pages/view/sticky/sticky-section/sticky-section", "pages/view/movable-view/movable-view", "pages/view/cover-view/cover-view", "pages/view/match-media/match-media", "pages/view/page-container/page-container", "pages/view/sticky/sticky", "pages/content/text/text", "pages/content/icon/icon", "pages/content/progress/progress", "pages/content/rich-text/rich-text", "pages/content/selection/selection", "pages/form/button/button", "pages/form/checkbox/checkbox", "pages/form/form/form", "pages/form/input/input", "pages/form/label/label", "pages/form/picker/picker", "pages/form/picker-view/picker-view", "pages/form/radio/radio", "pages/form/slider/slider", "pages/form/switch/switch", "pages/form/textarea/textarea", "pages/form/editor/editor", "pages/nav/navigator/navigator", "pages/nav/navigator/navigate", "pages/nav/navigator/redirect", "pages/media/image/image", "pages/media/video/video", "pages/media/camera/camera", "pages/media/camera-scan-code/camera-scan-code", "pages/media/live-pusher/live-pusher", "pages/media/live-player/live-player", "pages/media/channel-video/channel-video", "pages/media/channel-live/channel-live", "pages/map/map/map", "pages/canvas/canvas-2d/canvas-2d", "pages/canvas/webgl/webgl", "pages/open/ad/ad", "pages/open/open-data/open-data", "pages/open/web-view/web-view", "pages/obstacle-free/aria-component/aria-component", "pages/doc-web-view/doc-web-view" ] }, { "root": "packageAPI", "pages": [ "pages/api/login/login", "pages/api/get-user-info/get-user-info", "pages/api/request-payment/request-payment", "pages/api/jump/jump", "pages/api/official-account/official-account", "pages/api/share/share", "pages/api/share-button/share-button", "pages/api/custom-message/custom-message", "pages/api/subscribe-message/subscribe-message", "pages/api/choose-address/choose-address", "pages/api/choose-invoice-title/choose-invoice-title", "pages/api/soter-authentication/soter-authentication", "pages/api/setting/setting", "pages/ar/visionkit-basic/visionkit-basic", "pages/ar/visionkit-basic-v2/visionkit-basic-v2", "pages/ar/plane-ar/plane-ar", "pages/ar/plane-ar-v2/plane-ar-v2", "pages/ar/plane-ar-v2-options/plane-ar-v2-options", "pages/ar/plane-ar-v2-marker/plane-ar-v2-marker", "pages/ar/plane-ar-v2-depth/plane-ar-v2-depth", "pages/ar/plane-ar-3dof/plane-ar-3dof", "pages/ar/2dmarker-ar/2dmarker-ar", "pages/ar/3dmarker-ar/3dmarker-ar", "pages/ar/osd-ar/osd-ar", "pages/ar/face-detect/face-detect", "pages/ar/face-detect-3d/face-detect-3d", "pages/ar/face-detect-3d-glasses/face-detect-3d-glasses", "pages/ar/body-detect/body-detect", "pages/ar/body-detect-3d/body-detect-3d", "pages/ar/hand-detect/hand-detect", "pages/ar/hand-detect-3d/hand-detect-3d", "pages/ar/depth-detect/depth-detect", "pages/ar/cameraBuffer-detect/cameraBuffer-detect", "pages/ar/cameraBuffer-jpg/cameraBuffer-jpg", "pages/ar/ocr-detect/ocr-detect", "pages/ar/shoe-detect/shoe-detect", "pages/ar/photo-shoe-detect/photo-shoe-detect", "pages/ar/photo-ocr-detect/photo-ocr-detect", "pages/ar/photo-idcard-detect/photo-idcard-detect", "pages/ar/photo-hand-detect/photo-hand-detect", "pages/ar/photo-body-detect/photo-body-detect", "pages/ar/photo-face-detect/photo-face-detect", "pages/ar/photo-depth-detect/photo-depth-detect", "pages/ar/gaussian-splatting/gaussian-splatting", "pages/ar/gaussian-splatting/gaussian-splatting-ar", "pages/page/set-navigation-bar-title/set-navigation-bar-title", "pages/page/navigation-bar-loading/navigation-bar-loading", "pages/page/navigator/navigator", "pages/page/pull-down-refresh/pull-down-refresh", "pages/page/animation/animation", "pages/page/action-sheet/action-sheet", "pages/page/modal/modal", "pages/page/toast/toast", "pages/page/canvas/canvas", "pages/page/get-wxml-node-info/get-wxml-node-info", "pages/page/page-scroll/page-scroll", "pages/page/intersection-observer/intersection-observer", "pages/device/clipboard-data/clipboard-data", "pages/device/bluetooth/bluetooth", "pages/device/bluetooth/slave/slave", "pages/device/screen-brightness/screen-brightness", "pages/device/vibrate/vibrate", "pages/device/add-contact/add-contact", "pages/device/wifi/wifi", "pages/device/get-network-type/get-network-type", "pages/device/on-network-status-change/on-network-status-change", "pages/device/get-system-info/get-system-info", "pages/device/on-compass-change/on-compass-change", "pages/device/make-phone-call/make-phone-call", "pages/device/scan-code/scan-code", "pages/device/on-accelerometer-change/on-accelerometer-change", "pages/device/capture-screen/capture-screen", "pages/device/ibeacon/ibeacon", "pages/device/get-battery-info/get-battery-info", "pages/media/image/image", "pages/media/voice/voice", "pages/media/file/file", "pages/media/load-font-face/load-font-face", "pages/media/background-audio/background-audio", "pages/media/video/video", "pages/media/audio/audio", "pages/media/media-container/media-container", "pages/location/get-location/get-location", "pages/location/open-location/open-location", "pages/location/choose-location/choose-location", "pages/network/request/request", "pages/network/web-socket/web-socket", "pages/network/upload-file/upload-file", "pages/network/download-file/download-file", "pages/network/mdns/mdns", "pages/network/udp-socket/udp-socket", "pages/storage/storage/storage", "pages/storage/get-background-fetch-data/get-background-fetch-data", "pages/storage/get-background-prefetch-data/get-background-prefetch-data", "pages/performance/get-performance/get-performance", "pages/worker/worker/worker", "pages/framework/two-way-bindings/two-way-bindings", "pages/framework/wxs/wxs", "pages/framework/resizable/resizable", "pages/framework/wxs/movable", "pages/framework/wxs/sidebar", "pages/framework/wxs/stick-top", "pages/framework/wxs/nearby", "pages/ai/mobilenet/index", "pages/ai/style-trans/index", "pages/ai/mobilenet_int8/index", "pages/chattool/activity_assist/activity_assist", "pages/chattool/material_open/material_open", "pages/chattool/material_view/material_view" ] }, { "root": "packageCloud", "pages": [ "pages/user/user-authentication/user-authentication", "pages/database/crud/crud", "pages/database/db-permission/db-permission", "pages/database/server-date/server-date", "pages/storage/upload-file/upload-file", "pages/storage/download-file/download-file", "pages/storage/get-temp-file-url/get-temp-file-url", "pages/storage/delete-file/delete-file", "pages/storage/cloud-file-component/cloud-file-component", "pages/scf/get-wx-context/get-wx-context", "pages/scf/scf-database/scf-database", "pages/scf/scf-storage/scf-storage", "pages/scf/scf-openapi/scf-openapi" ] }, { "root": "packageExtend", "pages": [ "pages/form/cell/cell", "pages/form/slideview/slideview", "pages/form/form/form", "pages/form/uploader/uploader", "pages/base/article/article", "pages/base/icons/icons", "pages/base/badge/badge", "pages/base/flex/flex", "pages/base/footer/footer", "pages/base/gallery/gallery", "pages/base/grid/grid", "pages/base/loadmore/loadmore", "pages/base/loading/loading", "pages/base/panel/panel", "pages/base/preview/preview", "pages/operate/dialog/dialog", "pages/operate/msg/msg", "pages/operate/msg/msg_success", "pages/operate/msg/msg_text", "pages/operate/msg/msg_text_primary", "pages/operate/msg/msg_fail", "pages/operate/half-screen-dialog/half-screen-dialog", "pages/operate/actionsheet/actionsheet", "pages/operate/toptips/toptips", "pages/navigation/navigation/navigation", "pages/navigation/tabbar/tabbar", "pages/search/searchbar/searchbar", "pages/extend/emoji/emoji", "pages/extend/video-swiper/video-swiper", "pages/extend/index-list/index-list", "pages/extend/recycle-view/recycle-view", "pages/extend/sticky/sticky", "pages/extend/tabs/tabs", "pages/extend/vtabs/vtabs", "pages/extend/barrage/barrage", "pages/extend/select-text/select-text", "pages/extend/wxml-to-canvas/wxml-to-canvas", "pages/adapt/telescopic/telescopic", "pages/adapt/linebreak/linebreak", "pages/adapt/sidenavigation/sidenavigation", "pages/adapt/pagination/pagination", "pages/adapt/freelayout/freelayout", "pages/adapt/layeredpresentation/layeredpresentation", "pages/adapt/horizontalexpansion/horizontalexpansion" ] }, { "root": "packageSkyline", "renderer": "skyline", "componentFramework": "glass-easel", "pages": [ "pages/worklet/animation/index", "pages/worklet/gesture/index", "pages/share-element/list/index", "pages/share-element/card/index", "pages/worklet/bottom-sheet/index", "pages/half-page/scale-page/index", "pages/half-page/half-page/index" ] }, { "root": "packageSkylineExamples", "renderer": "skyline", "componentFramework": "glass-easel", "pages": [ "examples/address-book/pages/index/index", "examples/tab-indicator/pages/index/index", "examples/album/pages/album/index", "examples/album/pages/preview/index", "examples/half-screen/pages/index/index", "examples/segmented-half-screen/pages/index/index", "examples/card_transition/pages/list/list", "examples/card_transition/pages/detail/detail", "examples/product-list/pages/index/index", "examples/expanded-scroll-view/pages/index/index", "examples/refresher-two-level/index/index", "examples/refresher-two-level/goods/index", "examples/app-bar/pages/index/index", "examples/app-bar/pages/detail/index" ] }, { "root": "packageSkylineRouter", "componentFramework": "glass-easel", "renderer": "skyline", "pages": [ "pages/preset-router/index/index", "pages/preset-router/list/index", "pages/open-container/index/index", "pages/open-container/detail/index", "pages/open-container/other/index", "pages/page-return-gesture/index/index" ] }, { "root": "packageXRFrame", "pages": [ "pages/index/index", "pages/basic/scene-basic/index", "pages/basic/scene-basic-alpha/index", "pages/basic/scene-basic-light/index", "pages/basic/scene-basic-animation/index", "pages/basic/scene-basic-touch/index", "pages/basic/scene-basic-visible-layer/index", "pages/basic/scene-basic-shadow/index", "pages/basic/scene-basic-video/index", "pages/basic/scene-basic-render-texture/index", "pages/basic/scene-basic-postprocessing/index", "pages/basic/scene-basic-envData/index", "pages/basic/scene-basic-share/index", "pages/gltf/scene-gltf-damageHelmet/index", "pages/gltf/scene-gltf-unlit/index", "pages/gltf/scene-gltf-animation/index", "pages/gltf/scene-gltf-morph/index", "pages/gltf/scene-gltf-light-loading/index", "pages/gltf/scene-gltf-specularGlossiness/index", "pages/gltf/scene-gltf-sheen/index", "pages/gltf/scene-gltf-transmission/index", "pages/gltf/scene-gltf-textureTransform/index", "pages/gltf/scene-gltf-lightsPunctual/index", "pages/gltf/scene-gltf-compressTextures/index", "pages/ar/scene-ar-basic/index", "pages/ar/scene-ar-2dmarker/index", "pages/ar/scene-ar-osdmarker/index", "pages/ar/scene-ar-face/index", "pages/ar/scene-ar-hand/index", "pages/ar/scene-ar-body/index", "pages/ar/scene-ar-shoe/index", "pages/ar/scene-ar-face-3d/index", "pages/ar/scene-ar-hand-3d/index", "pages/ar/scene-ar-body-3d/index", "pages/ar/scene-ar-threeDof/index", "pages/ar/scene-ar-camera/index", "pages/ar/scene-ar-vio-marker/index", "pages/ar/scene-ar-vio-depth/index", "pages/custom/scene-custom-logic/index", "pages/custom/scene-custom-render/index", "pages/scan/scene-scan-render/index", "pages/scan/scene-scan-team/index", "pages/ar-classic/scene-classic-wxball/index", "pages/ar-classic/scene-classic-video/index", "pages/ar-classic/scene-classic-perspect/index", "pages/ar-classic/scene-classic-portal/index", "pages/ar-classic/scene-classic-osd/index", "pages/ar-classic/scene-classic-face/index", "pages/template/xr-template-message/index", "pages/template/xr-template-control/index", "pages/template/xr-template-loading/index", "pages/template/xr-template-toon/index", "pages/template/xr-template-pbr/index", "pages/template/xr-template-planeShadow/index", "pages/template/xr-template-geometry/index", "pages/template/xr-template-gltfEdit/index", "pages/template/xr-template-gltfAnimation/index", "pages/template/xr-template-gltfOcclusion/index", "pages/template/xr-template-gltfUVAnimation/index", "pages/template/xr-template-blendDouble/index", "pages/template/xr-template-frameEffect/index", "pages/template/xr-template-tracker/index", "pages/template/xr-template-markerCenter/index", "pages/template/xr-template-markerLock/index", "pages/template/xr-template-arLine/index", "pages/template/xr-template-select/index", "pages/template/xr-template-share/index", "pages/template/xr-template-textEdit/index", "pages/template/xr-template-removeBlack/index", "pages/template/xr-template-featherVideo/index", "pages/template/xr-template-arPreview/index", "pages/template/xr-template-arGlasses/index", "pages/template/xr-template-lookat/index", "pages/template/xr-template-arui/index", "pages/template/xr-template-volumeVideo/index", "pages/template/xr-template-dissolve/index", "pages/scene-last-record/index", "pages/scene-beside-edge/index", "pages/physics/scene-physics-shoot/index", "pages/physics/scene-physics-throw/index", "pages/particle/scene-particle-firework/index", "pages/particle/scene-particle-portal/index", "pages/particle/scene-particle-orb/index", "pages/particle/scene-particle-shapeEmitter/index", "pages/particle/scene-particle-custom/index", "pages/particle/scene-particle-meshEmitter/index", "pages/customParticle/scene-customParticle-firework/index", "pages/customParticle/scene-customParticle-orb/index", "pages/customParticle/scene-customParticle-portal/index", "pages/customParticle/scene-customParticle-shapeEmitter/index", "pages/customParticle/scene-customParticle-meshEmitter/index" ] } ], "preloadRule": { "page/component/index": { "network": "all", "packages": [ "packageComponent" ] }, "page/animation/index": { "network": "all", "packages": [ "packageSkylineRouter" ] }, "page/API/index": { "network": "all", "packages": [ "packageAPI" ] }, "packageAPI/pages/chattool/activity_assist/activity_assist": { "network": "all", "packages": [ "packageChatTool" ] }, "page/cloud/index": { "network": "all", "packages": [ "packageCloud" ] }, "page/extend/index": { "network": "all", "packages": [ "packageExtend" ] } }, "window": { "navigationBarTextStyle": "@navigationBarTextStyle", "navigationBarTitleText": "演示", "navigationBarBackgroundColor": "@navigationBarBackgroundColor", "backgroundColor": "@backgroundColor" }, "tabBar": { "color": "@tabBarColor", "selectedColor": "@tabBarSelectedColor", "borderStyle": "@tabBarBorderStyle", "backgroundColor": "@tabBarBackgroundColor", "list": [ { "pagePath": "page/component/index", "iconPath": "@iconPathComponent", "selectedIconPath": "@selectedIconPathComponent", "text": "组件" }, { "pagePath": "page/animation/index", "iconPath": "@iconPathComponent", "selectedIconPath": "@selectedIconPathComponent", "text": "交互动画" }, { "pagePath": "page/API/index", "iconPath": "@iconPathAPI", "selectedIconPath": "@selectedIconPathAPI", "text": "接口" }, { "pagePath": "page/cloud/index", "iconPath": "@iconPathCloud", "selectedIconPath": "@selectedIconPathCloud", "text": "云开发" }, { "pagePath": "page/ad/index", "iconPath": "@iconPathAd", "selectedIconPath": "@selectedIconPathAd", "text": "广告" } ] }, "networkTimeout": { "request": 10000, "connectSocket": 10000, "uploadFile": 10000, "downloadFile": 10000 }, "workers": "workers", "debug": false, "style": "v2", "permission": { "scope.userLocation": { "desc": "你的位置信息将用于小程序位置接口的效果展示" } }, "cloud": true, "sitemapLocation": "sitemap.json", "themeLocation": "demo.theme.json", "darkmode": true, "resizable": true, "useExtendedLib": { "weui": "latest" }, "frameset": true, "requiredBackgroundModes": [ "audio", "location" ], "requiredPrivateInfos": [ "getLocation", "chooseLocation", "chooseAddress" ], "embeddedAppIdList": [ "wxfdcee92a299bcaf1" ], "lazyCodeLoading": "requiredComponents", "__lazyCodeLoadingChunk": true, "rendererOptions": { "skyline": { "defaultDisplayBlock": true, "defaultContentBox": true, "tagNameStyleIsolation": "legacy", "disableABTest": true, "sdkVersionBegin": "3.0.0", "sdkVersionEnd": "15.255.255" } }, "componentFramework": "glass-easel", "appBar": {}, "supportedMaterials": [ { "materialType": "image/*", "name": "用${nickname}打开", "desc": "聊天内容长按打开", "path": "packageAPI/pages/chattool/material_open/material_open" } ], "multiSelectSupportedMaterials": [ { "materialType": [ "image/*" ], "desc": "聊天内容长按多选打开", "path": "packageAPI/pages/chattool/material_open/material_open", "scopes": [] } ] } ================================================ FILE: miniprogram/app.wxss ================================================ /* reset */ @import './common/common-skyline.wxss'; page { background-color: #f7f7f7; height: 100%; font-size: 16px; line-height: 1.6; color: rgba(0, 0, 0, .9); display: flex; flex-direction: column; justify-content: space-between; align-items: center; } page > view, page > scroll-view { width: 100vw; max-width: 600px; } checkbox, radio { margin-right: 5px; } canvas { position: fixed; top:0; } .info { position: absolute; left: 0; top: 0; width: 100px; height: 20px; line-height: 20px; background-color: rgb(5, 16, 112); color: #fff; padding-left: 10px; font-size: 12px; z-index: 1000; } .memory { top: 20px; } .cpu { top: 40px; } button { display: flex; justify-content: center; align-items: center; font-size: 16px; line-height: 1.2; } form { width: 100%; } input { width: 100%; } /* lib */ .strong { font-weight: bold; } .tc { text-align: center; } /* page */ .container { display: flex; flex-direction: column; min-height: 100%; justify-content: space-between; font-size: 16px; font-family: -apple-system-font,Helvetica Neue,Helvetica,sans-serif; } .page-head{ /* padding: 30px 25px 40px; */ padding: 30px 25px 40px; text-align: center; } .page-head-title { display: inline-block; /* padding: 0 20px 10px 20px; font-size: 16px; */ padding: 0 20px 10px 20px; font-size: 16px; } .page-head-line{ margin: 0 auto; width: 75px; height: 1px; background-color: rgba(0, 0, 0, .5); } .page-head-desc{ padding-top: 10px; color: rgba(0, 0, 0, .5); font-size: 16px; } .page-body { width: 100%; flex-grow: 1; } .page-body-wrapper { display: flex; flex-direction: column; align-items: center; width: 100%; } .page-body-wording { text-align: center; padding: 100px 50px; } .page-body-info { display: flex; flex-direction: column; align-items: center; background-color: #fff; width: 100%; padding: 25px 0 75px 0; } .page-body-title { margin-bottom: 50px; font-size: 16px; } .page-body-text { font-size: 15px; line-height: 26px; color: rgba(0, 0, 0, .3); } .page-body-text-small { font-size: 12px; color: rgba(0, 0, 0, .9); margin-bottom: 50px; } .page-foot{ margin: 50px 0 0 0; margin-bottom: constant(safe-area-inset-bottom); margin-bottom: env(safe-area-inset-bottom); padding-bottom: 15px; text-align: center; color: #1aad19; font-size: 0; } .icon-foot{ /* width: 151px; height: 12px; */ width: 76px; height: 12px; margin: 0 auto; } .page-section{ width: 100%; margin-bottom: 30px; } .page-section_center{ display: flex; flex-direction: column; align-items: center; } .page-section:last-child{ margin-bottom: 0; } .page-section-gap{ box-sizing: border-box; padding: 0 15px; } .page-section-spacing{ box-sizing: border-box; padding: 0 40px; } .page-section-title{ font-size: 14px; color: rgba(0, 0, 0, .5); margin-bottom: 5px; padding-left: 15px; /* padding-right: 15px; */ } .page-section-gap .page-section-title{ padding-left: 0; padding-right: 0; } .page-section-ctn{ } /* widget */ .btn-area{ margin-top: 30px; box-sizing: border-box; width: 100%; padding: 0 15px; } .image-plus { width: 75px; height: 75px; border: 1px solid rgba(0, 0, 0, .5); position: relative; } .image-plus-nb{ border: 0; } .image-plus-text{ color: rgba(0, 0, 0, .3); font-size: 14px; } .image-plus-horizontal { position: absolute; top: 50%; left: 50%; background-color: rgba(0, 0, 0, .5); width: 2px; height: 40px; transform: translate(-50%, -50%); } .image-plus-vertical { position: absolute; top: 50%; left: 50%; background-color: rgba(0, 0, 0, .5); width: 40px; height: 2px; transform: translate(-50%, -50%); } .demo-text-1{ position: relative; align-items: center; justify-content: center; background-color: #1AAD19; color: #FFFFFF; font-size: 18px; } /* skyline不支持:before */ /* .demo-text-1:before{ content: 'A'; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } */ .demo-text-2{ position: relative; align-items: center; justify-content: center; background-color: #2782D7; color: #FFFFFF; font-size: 18px; } /* skyline不支持:before */ /* .demo-text-2:before{ content: 'B'; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } */ .demo-text-3{ position: relative; align-items: center; justify-content: center; background-color: #F1F1F1; color: #353535; font-size: 18px; } /* skyline不支持:before */ /* .demo-text-3:before{ content: 'C'; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } */ /* pick from weui */ .weui-cells__title { margin-top: 16px; margin-bottom: 3px; padding-left: 16px; padding-right: 16px; color: rgba(0,0,0,0.5); font-size: 14px; line-height: 1.4; } /* skyline 未生效,用 .weui-cells_after-title 代替 */ .weui-cells__title + .weui-cells { margin-top: 0; } .weui-cells { margin-top: 8px; line-height: 1.41176471; font-size: 17px; overflow: hidden; position: relative; border-top: .5px solid rgba(0,0,0,0.1); border-bottom: .5px solid rgba(0,0,0,0.1); } .weui-cells_after-title { margin-top: 0; } .weui-cell { padding: 16px; flex-direction: row; align-items: center; } .weui-cell_before { left: 16px; border-top: .5px solid rgba(0, 0, 0, .1); } .weui-cell::before { display: none; } [data-weui-theme=dark] .weui-cell_before { border-top-color: hsla(0, 0%, 100%, .1); } .center { align-items: center; justify-content: center; } grid-tile { align-items: center; justify-content: center; overflow: hidden; } ================================================ FILE: miniprogram/assets/animation/basic-animation.json ================================================ { "keyframe": { "cube": { "0": { "position": [-3, 0, 2] }, "50": { "rotation": [0, 0, 0], "scale": [1, 1, 1] }, "100": { "position": [3, 0, 2], "rotation": [0, 3.14, 0], "scale": [1.4, 1.4, 1.4] } }, "sphere": { "0": { "position": [-3, 0, 0], "scale": [0.8, 0.8, 0.8] }, "50": { "position": [0, 0.2, 0], "scale": [1, 1, 1] }, "100": { "position": [3, 0, 0], "scale": [0.8, 0.8, 0.8] } }, "cylinder": { "0": { "position": [-3, 0, -2], "rotation": [0, 0, 0] }, "50": { "rotation": [0, 0, -3.14] }, "100": { "position": [3, 0, -2], "rotation": [0, 0, 3.14] } }, "plane": { "0": { "material.u_baseColorFactor": [0.48, 0.78, 0.64, 1] }, "50": { "material.u_baseColorFactor": [0.368, 0.937, 0.176, 1] }, "100": { "material.u_baseColorFactor": [0.176, 0.368, 0.937, 1] } }, "spotLight": { "0": { "position": [-4, 1, -4] }, "25": { "position": [-4.3, 0.5, -2] }, "75": { "position": [-3, 1.5, 2] }, "100": { "position": [-4, 1, 4] } } }, "animation": { "default": { "keyframe": "cube", "duration": 1, "ease": "ease-in-out", "loop": 400000, "delay": 1, "direction": "both" }, "sphere": { "keyframe": "sphere", "duration": 1, "ease": "ease-out", "loop": 400000, "delay": 1, "direction": "both" }, "cylinder": { "keyframe": "cylinder", "duration": 1, "ease": "ease-in", "loop": 400000, "delay": 1, "direction": "both" }, "plane": { "keyframe": "plane", "duration": 4, "ease": "linear", "loop": 400000, "delay": 1, "direction": "both" }, "spotLight": { "keyframe": "spotLight", "duration": 2, "ease": "ease-in-out", "loop": 400000, "delay": 1, "direction": "both" } } } ================================================ FILE: miniprogram/assets/animation/gltf-animation.json ================================================ { "keyframe": { "directionalLight": { "0": { "rotation": [40, 170, 0] }, "50": { "rotation": [30, 140, 0] }, "100": { "rotation": [40, 170, 0] } }, "pointLight": { "0": { "position": [10, 0, 0] }, "100": { "position": [-10, 0, 0] } }, "spotLight": { "0": { "rotation": [0,90,0] }, "100": { "rotation": [0, 270, 4] } } }, "animation": { "default": { "keyframe": "directionalLight", "duration": 60, "ease": "linear", "loop": 400000, "delay": 1, "direction": "both" }, "pointLight": { "keyframe": "pointLight", "duration": 6, "ease": "linear", "loop": 400000, "delay": 1, "direction": "both" }, "spotLight": { "keyframe": "spotLight", "duration": 200, "ease": "linear", "loop": 400000, "delay": 1, "direction": "both" } } } ================================================ FILE: miniprogram/assets/animation/last-record-anchor-animation.json ================================================ { "keyframe": { "parent": { "0": { "rotation": [0, 0, 0] }, "100": { "rotation": [0, 6.28, 0] } }, "child": { "0": { "position.y": 0.8 }, "50": { "position.y": 1 }, "100": { "position.y": 0.8 } }, "door": { "0": { "scale": [0, 1, 1] }, "100": { "scale": [1, 1, 1] } } }, "animation": { "parent": { "keyframe": "parent", "duration": 8, "ease": "linear", "loop": -1 }, "child": { "keyframe": "child", "duration": 4, "ease": "linear", "direction": "both", "loop": -1 }, "door": { "keyframe": "door", "duration": 0.6, "ease": "linear" } } } ================================================ FILE: miniprogram/assets/animation/miku-kawaii-animation.json ================================================ { "keyframe": { "parent": { "0": { "rotation": [0, 0, 0] }, "100": { "rotation": [0, 6.28, 0] } }, "child": { "0": { "position.y": -0.5 }, "100": { "position.y": 1.5 } } }, "animation": { "parent": { "keyframe": "parent", "duration": 8, "ease": "linear", "loop": -1 }, "child": { "keyframe": "child", "duration": 4, "ease": "ease-in-out", "direction": "both", "loop": -1 } } } ================================================ FILE: miniprogram/common/common-skyline.wxss ================================================ /*! * WeUI v2.3.0 (https://github.com/weui/weui-wxss) * Copyright 2020 Tencent, Inc. * Licensed under the MIT license */ /* @import '../components/weui-wxss/dist/style/weui.wxss'; */ page { height: 100%; display: flex; justify-content: center; } .page { height: fit-content; min-height: 100%; background-color: #f7f7f7; color: rgba(0, 0, 0, .9); font-size: 16px; font-family: -apple-system-font, Helvetica Neue, Helvetica, sans-serif; /* max-width: 600px; */ } image { /* max-width: 100%; max-height: 100% */ } .link { display: inline; color: #576b95 } .fadeIn { -webkit-animation: a .3s forwards; animation: a .3s forwards } .fadeOut { -webkit-animation: b .3s forwards; animation: b .3s forwards } @-webkit-keyframes a { 0% { opacity: 0 } to { opacity: 1 } } @keyframes a { 0% { opacity: 0 } to { opacity: 1 } } @-webkit-keyframes b { 0% { opacity: 1 } to { opacity: 0 } } @keyframes b { 0% { opacity: 1 } to { opacity: 0 } } .weui-msg__extra-area { position: static } .page__hd { padding: 40px } .page__bd { padding-bottom: 40px } .page__bd_spacing { padding-left: 15px; padding-right: 15px } .page__ft { padding-top: 40px; padding-bottom: 10px; padding-bottom: calc(10px + constant(safe-area-inset-bottom)); padding-bottom: calc(10px + env(safe-area-inset-bottom)); text-align: center } [data-weui-theme=dark] .page__ft image { -webkit-filter: invert(100) hue-rotate(180deg); filter: invert(100) hue-rotate(180deg) } .page__title { text-align: left; font-size: 20px; font-weight: 400 } .page__desc { margin-top: 5px; color: rgba(0, 0, 0, .5); text-align: left; font-size: 14px } .weui-cell_example:before { left: 52px } @media (prefers-color-scheme: dark) { page { background-color: #1F1F1F; color: hsla(0, 0%, 100%, .8); } } [data-weui-theme=dark] .page-head-line{ background-color: hsla(0, 0%, 100%, .5); } [data-weui-theme=dark] .page-head-desc { background-color: hsla(0, 0%, 100%, .5); } [data-weui-theme=dark] .page-body-info { background-color: #232323; } [data-weui-theme=dark] .page-body-text { color: hsla(0, 0%, 100%, .3); } [data-weui-theme=dark] .page-body-text-small { color: hsla(0, 0%, 100%, .8); } [data-weui-theme=dark] .page-section-title { color: hsla(0, 0%, 100%, .5); } [data-weui-theme=dark] .image-plus { border-color: hsla(0, 0%, 100%, .5); } [data-weui-theme=dark] .image-plus-text { color: hsla(0, 0%, 100%, .3); } [data-weui-theme=dark].page { background-color: #1f1f1f; color: hsla(0, 0%, 100%, .8); } [data-weui-theme=dark] .link { color: #7d90a9; } [data-weui-theme=dark] .page__desc { color: hsla(0, 0%, 100%, .5); } ================================================ FILE: miniprogram/common/common.wxss ================================================ /*! * WeUI v2.3.0 (https://github.com/weui/weui-wxss) * Copyright 2020 Tencent, Inc. * Licensed under the MIT license */ /* @import '../components/weui-wxss/dist/style/weui.wxss'; */ page { height: 100%; display: flex; justify-content: center; } .page { height: fit-content; min-height: 100%; background-color: var(--weui-BG-1); color: var(--weui-FG-0); font-size: 16px; font-family: -apple-system-font, Helvetica Neue, Helvetica, sans-serif; max-width: 600px; } image { max-width: 100%; max-height: 100% } .link { display: inline; color: var(--weui-LINK) } .fadeIn { -webkit-animation: a .3s forwards; animation: a .3s forwards } .fadeOut { -webkit-animation: b .3s forwards; animation: b .3s forwards } @-webkit-keyframes a { 0% { opacity: 0 } to { opacity: 1 } } @keyframes a { 0% { opacity: 0 } to { opacity: 1 } } @-webkit-keyframes b { 0% { opacity: 1 } to { opacity: 0 } } @keyframes b { 0% { opacity: 1 } to { opacity: 0 } } .weui-msg__extra-area { position: static } .page__hd { padding: 40px } .page__bd { padding-bottom: 40px } .page__bd_spacing { padding-left: 15px; padding-right: 15px } .page__ft { padding-top: 40px; padding-bottom: 10px; padding-bottom: calc(10px + constant(safe-area-inset-bottom)); padding-bottom: calc(10px + env(safe-area-inset-bottom)); text-align: center } [data-weui-theme=dark] .page__ft image { -webkit-filter: invert(100) hue-rotate(180deg); filter: invert(100) hue-rotate(180deg) } .page__title { text-align: left; font-size: 20px; font-weight: 400 } .page__desc { margin-top: 5px; color: var(--weui-FG-1); text-align: left; font-size: 14px } .weui-cell_example:before { left: 52px } @media (prefers-color-scheme: dark) { page { background-color: #1F1F1F; } } ================================================ FILE: miniprogram/common/foot.wxml ================================================ ================================================ FILE: miniprogram/common/head.wxml ================================================ ================================================ FILE: miniprogram/common/index.wxss ================================================ .index-hd { padding: 40px; text-align: center; } .index-bd { padding: 0 15px 20px; } .index-ft { padding-bottom: 10px; text-align: center; } .index-logo { width: 43px; height: 43px; } .index-desc { margin-top: 10px; color: #888888; font-size: 14px; } .navigator-box { opacity: 0; position: relative; background-color: #FFFFFF; line-height: 1.41176471; font-size: 32px; transform: translateY(-50%); transition: .3s; } .navigator-box-show { opacity: 1; transform: translateY(0); } .navigator { padding: 10px 15px; position: relative; display: flex; align-items: center; } .navigator:before { content: " "; position: absolute; left: 15px; top: 0; right: 15px; height: 1px; border-top: 1px solid #D8D8D8; color: #D8D8D8; } .navigator:first-child:before { display: none; } .navigator-text { flex: 1; } .navigator-arrow { padding-right: 13px; position: relative; } .navigator-arrow:after { content: " "; display: inline-block; height: 9px; width: 9px; border-width: 1px 1px 0 0; border-color: #888888; border-style: solid; transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0); position: absolute; top: 50%; margin-top: -4px; right: 14px; } .kind-list-item { margin: 10px 0; background-color: #FFFFFF; border-radius: 2px; overflow: hidden; } .kind-list-item:first-child { margin-top: 0; } .kind-list-text{ flex: 1; } .kind-list-img { width: 30px; height: 30px; } .kind-list-item-hd { padding: 15px; display: flex; align-items: center; transition: opacity .3s; } .kind-list-item-hd-show { opacity: .2; } .kind-list-item-bd { height: 0; overflow: hidden; } .kind-list-item-bd-show { height: auto; } ================================================ FILE: miniprogram/common/lib/weui.wxss ================================================ /*! * WeUI v2.3.0 (https://github.com/weui/weui-wxss) * Copyright 2020 Tencent, Inc. * Licensed under the MIT license */ [data-weui-theme=light], page, :root { --weui-BTN-DISABLED-FONT-COLOR: rgba(0, 0, 0, .2) } @media(prefers-color-scheme: dark) { page, :root { --weui-BTN-DISABLED-FONT-COLOR: hsla(0, 0%, 100%, .2) } } [data-weui-theme=light], page, :root { --weui-BTN-DEFAULT-BG: #f2f2f2 } @media(prefers-color-scheme: dark) { page, :root { --weui-BTN-DEFAULT-BG: hsla(0, 0%, 100%, .08) } } [data-weui-theme=light], page, :root { --weui-BTN-DEFAULT-COLOR: #06ae56 } @media(prefers-color-scheme: dark) { page, :root { --weui-BTN-DEFAULT-COLOR: hsla(0, 0%, 100%, .8) } } [data-weui-theme=light], page, :root { --weui-BTN-DEFAULT-ACTIVE-BG: #e6e6e6 } @media(prefers-color-scheme: dark) { page, :root { --weui-BTN-DEFAULT-ACTIVE-BG: hsla(0, 0%, 100%, .126) } } [data-weui-theme=light], page, :root { --weui-DIALOG-LINE-COLOR: rgba(0, 0, 0, .1) } @media(prefers-color-scheme: dark) { page, :root { --weui-DIALOG-LINE-COLOR: hsla(0, 0%, 100%, .1) } } page { line-height: 1.6; font-family: -apple-system-font, Helvetica Neue, sans-serif } icon { vertical-align: middle } [data-weui-theme=light], page, :root { --weui-BG-0: #ededed; --weui-BG-1: #f7f7f7; --weui-BG-2: #fff; --weui-BG-3: #f7f7f7; --weui-BG-4: #4c4c4c; --weui-BG-5: #fff; --weui-FG-0: rgba(0, 0, 0, .9); --weui-FG-HALF: rgba(0, 0, 0, .9); --weui-FG-1: rgba(0, 0, 0, .5); --weui-FG-2: rgba(0, 0, 0, .3); --weui-FG-3: rgba(0, 0, 0, .1); --weui-RED: #fa5151; --weui-ORANGE: #fa9d3b; --weui-YELLOW: #ffc300; --weui-GREEN: #91d300; --weui-LIGHTGREEN: #95ec69; --weui-BRAND: #07c160; --weui-BLUE: #10aeff; --weui-INDIGO: #1485ee; --weui-PURPLE: #6467f0; --weui-WHITE: #fff; --weui-LINK: #576b95; --weui-TEXTGREEN: #06ae56; --weui-FG: #000; --weui-BG: #fff; --weui-TAG-TEXT-ORANGE: #fa9d3b; --weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1); --weui-TAG-TEXT-GREEN: #06ae56; --weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1); --weui-TAG-TEXT-BLUE: #10aeff; --weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1); --weui-TAG-TEXT-BLACK: rgba(0, 0, 0, .5); --weui-TAG-BACKGROUND-BLACK: rgba(0, 0, 0, .05) } @media(prefers-color-scheme: dark) { page, :root { --weui-BG-0: #191919; --weui-BG-1: #1f1f1f; --weui-BG-2: #232323; --weui-BG-3: #2f2f2f; --weui-BG-4: #606060; --weui-BG-5: #2c2c2c; --weui-FG-0: hsla(0, 0%, 100%, .8); --weui-FG-HALF: hsla(0, 0%, 100%, .6); --weui-FG-1: hsla(0, 0%, 100%, .5); --weui-FG-2: hsla(0, 0%, 100%, .3); --weui-FG-3: hsla(0, 0%, 100%, .05); --weui-RED: #fa5151; --weui-ORANGE: #c87d2f; --weui-YELLOW: #cc9c00; --weui-GREEN: #74a800; --weui-LIGHTGREEN: #28b561; --weui-BRAND: #07c160; --weui-BLUE: #10aeff; --weui-INDIGO: #1196ff; --weui-PURPLE: #8183ff; --weui-WHITE: hsla(0, 0%, 100%, .8); --weui-LINK: #7d90a9; --weui-TEXTGREEN: #259c5c; --weui-FG: #fff; --weui-BG: #000; --weui-TAG-TEXT-ORANGE: rgba(250, 157, 59, .6); --weui-TAG-BACKGROUND-ORANGE: rgba(250, 157, 59, .1); --weui-TAG-TEXT-GREEN: rgba(6, 174, 86, .6); --weui-TAG-BACKGROUND-GREEN: rgba(6, 174, 86, .1); --weui-TAG-TEXT-BLUE: rgba(16, 174, 255, .6); --weui-TAG-BACKGROUND-BLUE: rgba(16, 174, 255, .1); --weui-TAG-TEXT-BLACK: hsla(0, 0%, 100%, .5); --weui-TAG-BACKGROUND-BLACK: hsla(0, 0%, 100%, .05) } } [data-weui-theme=light], page, :root { --weui-BG-COLOR-ACTIVE: #ececec } @media(prefers-color-scheme: dark) { page, :root { --weui-BG-COLOR-ACTIVE: #373737 } } [class*=" weui-icon-"], [class^=weui-icon-] { display: inline-block; vertical-align: middle; width: 24px; height: 24px; -webkit-mask-position: 50% 50%; mask-position: 50% 50%; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-size: 100%; mask-size: 100%; background-color: currentColor } .weui-icon-circle { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%221000%22%20height%3D%221000%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M500%20916.667C269.881%20916.667%2083.333%20730.119%2083.333%20500%2083.333%20269.881%20269.881%2083.333%20500%2083.333c230.119%200%20416.667%20186.548%20416.667%20416.667%200%20230.119-186.548%20416.667-416.667%20416.667zm0-50c202.504%200%20366.667-164.163%20366.667-366.667%200-202.504-164.163-366.667-366.667-366.667-202.504%200-366.667%20164.163-366.667%20366.667%200%20202.504%20164.163%20366.667%20366.667%20366.667z%22%20fill-rule%3D%22evenodd%22%20fill-opacity%3D%22.9%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%221000%22%20height%3D%221000%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M500%20916.667C269.881%20916.667%2083.333%20730.119%2083.333%20500%2083.333%20269.881%20269.881%2083.333%20500%2083.333c230.119%200%20416.667%20186.548%20416.667%20416.667%200%20230.119-186.548%20416.667-416.667%20416.667zm0-50c202.504%200%20366.667-164.163%20366.667-366.667%200-202.504-164.163-366.667-366.667-366.667-202.504%200-366.667%20164.163-366.667%20366.667%200%20202.504%20164.163%20366.667%20366.667%20366.667z%22%20fill-rule%3D%22evenodd%22%20fill-opacity%3D%22.9%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-download { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M11.25%2012.04l-1.72-1.72-1.06%201.06%202.828%202.83a1%201%200%20001.414-.001l2.828-2.828-1.06-1.061-1.73%201.73V7h-1.5v5.04zm0-5.04V2h1.5v5h6.251c.55%200%20.999.446.999.996v13.008a.998.998%200%2001-.996.996H4.996A.998.998%200%20014%2021.004V7.996A1%201%200%20014.999%207h6.251z%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M11.25%2012.04l-1.72-1.72-1.06%201.06%202.828%202.83a1%201%200%20001.414-.001l2.828-2.828-1.06-1.061-1.73%201.73V7h-1.5v5.04zm0-5.04V2h1.5v5h6.251c.55%200%20.999.446.999.996v13.008a.998.998%200%2001-.996.996H4.996A.998.998%200%20014%2021.004V7.996A1%201%200%20014.999%207h6.251z%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-info { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-.75-12v7h1.5v-7h-1.5zM12%209a1%201%200%20100-2%201%201%200%20000%202z%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-.75-12v7h1.5v-7h-1.5zM12%209a1%201%200%20100-2%201%201%200%20000%202z%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-safe-success { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%201000%22%3E%3Cpath%20d%3D%22M500.9%204.6C315.5%2046.7%20180.4%2093.1%2057.6%20132c0%20129.3.2%20231.7.2%20339.7%200%20304.2%20248.3%20471.6%20443.1%20523.7C695.7%20943.3%20944%20775.9%20944%20471.7c0-108%20.2-210.4.2-339.7C821.4%2093.1%20686.3%2046.7%20500.9%204.6zm248.3%20349.1l-299.7%20295c-2.1%202-5.3%202-7.4-.1L304.4%20506.1c-2-2.1-2.3-5.7-.6-8l18.3-24.9c1.7-2.3%205-2.8%207.2-1l112.2%2086c2.3%201.8%206%201.7%208.1-.1l274.7-228.9c2.2-1.8%205.7-1.7%207.7.3l17%2016.8c2.2%202.1%202.2%205.3.2%207.4z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23070202%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%201000%22%3E%3Cpath%20d%3D%22M500.9%204.6C315.5%2046.7%20180.4%2093.1%2057.6%20132c0%20129.3.2%20231.7.2%20339.7%200%20304.2%20248.3%20471.6%20443.1%20523.7C695.7%20943.3%20944%20775.9%20944%20471.7c0-108%20.2-210.4.2-339.7C821.4%2093.1%20686.3%2046.7%20500.9%204.6zm248.3%20349.1l-299.7%20295c-2.1%202-5.3%202-7.4-.1L304.4%20506.1c-2-2.1-2.3-5.7-.6-8l18.3-24.9c1.7-2.3%205-2.8%207.2-1l112.2%2086c2.3%201.8%206%201.7%208.1-.1l274.7-228.9c2.2-1.8%205.7-1.7%207.7.3l17%2016.8c2.2%202.1%202.2%205.3.2%207.4z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23070202%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-safe-warn { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%201000%22%3E%3Cpath%20d%3D%22M500.9%204.5c-185.4%2042-320.4%2088.4-443.2%20127.3%200%20129.3.2%20231.7.2%20339.6%200%20304.1%20248.2%20471.4%20443%20523.6%20194.7-52.2%20443-219.5%20443-523.6%200-107.9.2-210.3.2-339.6C821.3%2092.9%20686.2%2046.5%20500.9%204.5zm-26.1%20271.1h52.1c5.8%200%2010.3%204.7%2010.1%2010.4l-11.6%20313.8c-.1%202.8-2.5%205.2-5.4%205.2h-38.2c-2.9%200-5.3-2.3-5.4-5.2L464.8%20286c-.2-5.8%204.3-10.4%2010-10.4zm26.1%20448.3c-20.2%200-36.5-16.3-36.5-36.5s16.3-36.5%2036.5-36.5%2036.5%2016.3%2036.5%2036.5-16.4%2036.5-36.5%2036.5z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23020202%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%201000%22%3E%3Cpath%20d%3D%22M500.9%204.5c-185.4%2042-320.4%2088.4-443.2%20127.3%200%20129.3.2%20231.7.2%20339.6%200%20304.1%20248.2%20471.4%20443%20523.6%20194.7-52.2%20443-219.5%20443-523.6%200-107.9.2-210.3.2-339.6C821.3%2092.9%20686.2%2046.5%20500.9%204.5zm-26.1%20271.1h52.1c5.8%200%2010.3%204.7%2010.1%2010.4l-11.6%20313.8c-.1%202.8-2.5%205.2-5.4%205.2h-38.2c-2.9%200-5.3-2.3-5.4-5.2L464.8%20286c-.2-5.8%204.3-10.4%2010-10.4zm26.1%20448.3c-20.2%200-36.5-16.3-36.5-36.5s16.3-36.5%2036.5-36.5%2036.5%2016.3%2036.5%2036.5-16.4%2036.5-36.5%2036.5z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23020202%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-success { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-1.177-7.86l-2.765-2.767L7%2012.431l3.119%203.121a1%201%200%20001.414%200l5.952-5.95-1.062-1.062-5.6%205.6z%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-1.177-7.86l-2.765-2.767L7%2012.431l3.119%203.121a1%201%200%20001.414%200l5.952-5.95-1.062-1.062-5.6%205.6z%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-success-circle { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zm-1.172-6.242l5.809-5.808.848.849-5.95%205.95a1%201%200%2001-1.414%200L7%2012.426l.849-.849%202.98%202.98z%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zm-1.172-6.242l5.809-5.808.848.849-5.95%205.95a1%201%200%2001-1.414%200L7%2012.426l.849-.849%202.98%202.98z%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-success-no-circle { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.657%2018.435L3%2012.778l1.414-1.414%204.95%204.95L20.678%205l1.414%201.414-12.02%2012.021a1%201%200%2001-1.415%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.657%2018.435L3%2012.778l1.414-1.414%204.95%204.95L20.678%205l1.414%201.414-12.02%2012.021a1%201%200%2001-1.415%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-waiting { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.75%2011.38V6h-1.5v6l4.243%204.243%201.06-1.06-3.803-3.804zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.75%2011.38V6h-1.5v6l4.243%204.243%201.06-1.06-3.803-3.804zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-waiting-circle { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.6%2011.503l3.891%203.891-.848.849L11.4%2012V6h1.2v5.503zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6z%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.6%2011.503l3.891%203.891-.848.849L11.4%2012V6h1.2v5.503zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6z%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-warn { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-.763-15.864l.11%207.596h1.305l.11-7.596h-1.525zm.759%2010.967c.512%200%20.902-.383.902-.882%200-.5-.39-.882-.902-.882a.878.878%200%2000-.896.882c0%20.499.396.882.896.882z%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-.763-15.864l.11%207.596h1.305l.11-7.596h-1.525zm.759%2010.967c.512%200%20.902-.383.902-.882%200-.5-.39-.882-.902-.882a.878.878%200%2000-.896.882c0%20.499.396.882.896.882z%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-info-circle { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zM11.4%2010h1.2v7h-1.2v-7zm.6-1a1%201%200%20110-2%201%201%200%20010%202z%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zM11.4%2010h1.2v7h-1.2v-7zm.6-1a1%201%200%20110-2%201%201%200%20010%202z%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-cancel { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6z%22%20fill-rule%3D%22nonzero%22%2F%3E%3Cpath%20d%3D%22M12.849%2012l3.11%203.111-.848.849L12%2012.849l-3.111%203.11-.849-.848L11.151%2012l-3.11-3.111.848-.849L12%2011.151l3.111-3.11.849.848L12.849%2012z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6z%22%20fill-rule%3D%22nonzero%22%2F%3E%3Cpath%20d%3D%22M12.849%2012l3.11%203.111-.848.849L12%2012.849l-3.111%203.11-.849-.848L11.151%2012l-3.11-3.111.848-.849L12%2011.151l3.111-3.11.849.848L12.849%2012z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E) } .weui-icon-search { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M16.31%2015.561l4.114%204.115-.848.848-4.123-4.123a7%207%200%2011.857-.84zM16.8%2011a5.8%205.8%200%2010-11.6%200%205.8%205.8%200%200011.6%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M16.31%2015.561l4.114%204.115-.848.848-4.123-4.123a7%207%200%2011.857-.84zM16.8%2011a5.8%205.8%200%2010-11.6%200%205.8%205.8%200%200011.6%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-clear { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M13.06%2012l3.006-3.005-1.06-1.06L12%2010.938%208.995%207.934l-1.06%201.06L10.938%2012l-3.005%203.005%201.06%201.06L12%2013.062l3.005%203.005%201.06-1.06L13.062%2012zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010z%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M13.06%2012l3.006-3.005-1.06-1.06L12%2010.938%208.995%207.934l-1.06%201.06L10.938%2012l-3.005%203.005%201.06%201.06L12%2013.062l3.005%203.005%201.06-1.06L13.062%2012zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010z%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-back { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm1.999-6.563L10.68%2012%2014%208.562%2012.953%207.5%209.29%2011.277a1.045%201.045%200%20000%201.446l3.663%203.777L14%2015.437z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm1.999-6.563L10.68%2012%2014%208.562%2012.953%207.5%209.29%2011.277a1.045%201.045%200%20000%201.446l3.663%203.777L14%2015.437z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-delete { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M6.774%206.4l.812%2013.648a.8.8%200%2000.798.752h7.232a.8.8%200%2000.798-.752L17.226%206.4H6.774zm11.655%200l-.817%2013.719A2%202%200%200115.616%2022H8.384a2%202%200%2001-1.996-1.881L5.571%206.4H3.5v-.7a.5.5%200%2001.5-.5h16a.5.5%200%2001.5.5v.7h-2.071zM14%203a.5.5%200%2001.5.5v.7h-5v-.7A.5.5%200%200110%203h4zM9.5%209h1.2l.5%209H10l-.5-9zm3.8%200h1.2l-.5%209h-1.2l.5-9z%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M6.774%206.4l.812%2013.648a.8.8%200%2000.798.752h7.232a.8.8%200%2000.798-.752L17.226%206.4H6.774zm11.655%200l-.817%2013.719A2%202%200%200115.616%2022H8.384a2%202%200%2001-1.996-1.881L5.571%206.4H3.5v-.7a.5.5%200%2001.5-.5h16a.5.5%200%2001.5.5v.7h-2.071zM14%203a.5.5%200%2001.5.5v.7h-5v-.7A.5.5%200%200110%203h4zM9.5%209h1.2l.5%209H10l-.5-9zm3.8%200h1.2l-.5%209h-1.2l.5-9z%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-success-no-circle-thin { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.864%2016.617l-5.303-5.303-1.061%201.06%205.657%205.657a1%201%200%20001.414%200L21.238%206.364l-1.06-1.06L8.864%2016.616z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.864%2016.617l-5.303-5.303-1.061%201.06%205.657%205.657a1%201%200%20001.414%200L21.238%206.364l-1.06-1.06L8.864%2016.616z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-arrow { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-arrow-bold { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20height%3D%2224%22%20width%3D%2212%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10.157%2012.711L4.5%2018.368l-1.414-1.414%204.95-4.95-4.95-4.95L4.5%205.64l5.657%205.657a1%201%200%20010%201.414z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20height%3D%2224%22%20width%3D%2212%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10.157%2012.711L4.5%2018.368l-1.414-1.414%204.95-4.95-4.95-4.95L4.5%205.64l5.657%205.657a1%201%200%20010%201.414z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-back-arrow { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M3.343%2012l7.071%207.071L9%2020.485l-7.778-7.778a1%201%200%20010-1.414L9%203.515l1.414%201.414L3.344%2012z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M3.343%2012l7.071%207.071L9%2020.485l-7.778-7.778a1%201%200%20010-1.414L9%203.515l1.414%201.414L3.344%2012z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-back-arrow-thin { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10%2019.438L8.955%2020.5l-7.666-7.79a1.02%201.02%200%20010-1.42L8.955%203.5%2010%204.563%202.682%2012%2010%2019.438z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10%2019.438L8.955%2020.5l-7.666-7.79a1.02%201.02%200%20010-1.42L8.955%203.5%2010%204.563%202.682%2012%2010%2019.438z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-close { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2010.586l5.657-5.657%201.414%201.414L13.414%2012l5.657%205.657-1.414%201.414L12%2013.414l-5.657%205.657-1.414-1.414L10.586%2012%204.929%206.343%206.343%204.93%2012%2010.586z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2010.586l5.657-5.657%201.414%201.414L13.414%2012l5.657%205.657-1.414%201.414L12%2013.414l-5.657%205.657-1.414-1.414L10.586%2012%204.929%206.343%206.343%204.93%2012%2010.586z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-close-thin { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.25%2010.693L6.057%204.5%205%205.557l6.193%206.193L5%2017.943%206.057%2019l6.193-6.193L18.443%2019l1.057-1.057-6.193-6.193L19.5%205.557%2018.443%204.5z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.25%2010.693L6.057%204.5%205%205.557l6.193%206.193L5%2017.943%206.057%2019l6.193-6.193L18.443%2019l1.057-1.057-6.193-6.193L19.5%205.557%2018.443%204.5z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-back-circle { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zm1.999-5.363L12.953%2016.5%209.29%2012.723a1.045%201.045%200%20010-1.446L12.953%207.5%2014%208.563%2010.68%2012%2014%2015.438z%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zm1.999-5.363L12.953%2016.5%209.29%2012.723a1.045%201.045%200%20010-1.446L12.953%207.5%2014%208.563%2010.68%2012%2014%2015.438z%22%2F%3E%3C%2Fsvg%3E) } .weui-icon-success { color: var(--weui-BRAND) } .weui-icon-waiting { color: var(--weui-BLUE) } .weui-icon-warn { color: var(--weui-RED) } .weui-icon-info { color: var(--weui-BLUE) } .weui-icon-success-circle, .weui-icon-success-no-circle, .weui-icon-success-no-circle-thin { color: var(--weui-BRAND) } .weui-icon-waiting-circle { color: var(--weui-BLUE) } .weui-icon-circle { color: var(--weui-FG-2) } .weui-icon-download { color: var(--weui-BRAND) } .weui-icon-info-circle { color: var(--weui-FG-2) } .weui-icon-safe-success { color: var(--weui-BRAND) } .weui-icon-safe-warn { color: var(--weui-YELLOW) } .weui-icon-cancel { color: var(--weui-RED) } .weui-icon-search { color: var(--weui-FG-1) } .weui-icon-clear { color: var(--weui-FG-2) } .weui-icon-clear:active { color: var(--weui-FG-1) } .weui-icon-delete.weui-icon_gallery-delete { color: var(--weui-WHITE) } .weui-icon-arrow, .weui-icon-arrow-bold, .weui-icon-back-arrow, .weui-icon-back-arrow-thin { width: 12px } .weui-icon-arrow, .weui-icon-arrow-bold { color: var(--weui-FG-2) } .weui-icon-back, .weui-icon-back-arrow, .weui-icon-back-arrow-thin, .weui-icon-back-circle { color: var(--weui-FG-0) } .weui-icon_msg { width: 64px; height: 64px } .weui-icon_msg.weui-icon-warn { color: var(--weui-RED) } .weui-icon_msg-primary { width: 64px; height: 64px } .weui-icon_msg-primary.weui-icon-warn { color: var(--weui-YELLOW) } .weui-link { -webkit-tap-highlight-color: rgba(0, 0, 0, 0) } .weui-link, .weui-link:visited { color: var(--weui-LINK) } .weui-btn { position: relative; display: block; width: 184px; margin-left: auto; margin-right: auto; padding: 8px 24px; box-sizing: border-box; font-weight: 700; font-size: 17px; text-align: center; text-decoration: none; color: #fff; line-height: 1.41176471; border-radius: 4px; overflow: hidden; -webkit-tap-highlight-color: rgba(0, 0, 0, 0) } .weui-btn_block { width: auto } .weui-btn_inline { display: inline-block } .weui-btn_default { background-color: var(--weui-BTN-DEFAULT-BG) } .weui-btn_default, .weui-btn_default:not(.weui-btn_disabled):visited { color: var(--weui-BTN-DEFAULT-COLOR) } .weui-btn_default:not(.weui-btn_disabled):active { background-color: var(--weui-BTN-DEFAULT-ACTIVE-BG) } .weui-btn_primary { background-color: var(--weui-BRAND) } .weui-btn_primary:not(.weui-btn_disabled):visited { color: #fff } .weui-btn_primary:not(.weui-btn_disabled):active { background-color: var(--weui-TAG-TEXT-GREEN) } .weui-btn_warn { background-color: var(--weui-BTN-DEFAULT-BG) } .weui-btn_warn, .weui-btn_warn:not(.weui-btn_disabled):visited { color: var(--weui-RED) } .weui-btn_warn:not(.weui-btn_disabled):active { background-color: var(--weui-BTN-DEFAULT-ACTIVE-BG) } .weui-btn_disabled { color: var(--weui-BTN-DISABLED-FONT-COLOR); background-color: var(--weui-BTN-DEFAULT-BG) } .weui-btn_loading .weui-loading { margin: -.2em .34em 0 0 } .weui-btn_loading.weui-btn_primary { background-color: var(--weui-TAG-TEXT-GREEN); color: var(--weui-WHITE) } .weui-btn_loading.weui-btn_default, .weui-btn_loading.weui-btn_warn { background-color: var(--weui-BTN-DEFAULT-ACTIVE-BG) } .weui-btn_cell { position: relative; display: block; margin-left: auto; margin-right: auto; box-sizing: border-box; font-size: 17px; text-align: center; text-decoration: none; color: #fff; line-height: 1.41176471; padding: 16px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); overflow: hidden; background-color: var(--weui-BG-5) } .weui-btn_cell+.weui-btn_cell { margin-top: 16px } .weui-btn_cell:active { background-color: var(--weui-BG-COLOR-ACTIVE) } .weui-btn_cell__icon { display: inline-block; vertical-align: middle; width: 24px; height: 24px; margin: -.2em .34em 0 0 } .weui-btn_cell-default { color: var(--weui-FG-0) } .weui-btn_cell-primary { color: var(--weui-LINK) } .weui-btn_cell-warn { color: var(--weui-RED) } button.weui-btn, input.weui-btn { border-width: 0; outline: 0; -webkit-appearance: none } button.weui-btn:focus, input.weui-btn:focus { outline: 0 } button.weui-btn_inline, button.weui-btn_mini, input.weui-btn_inline, input.weui-btn_mini { width: auto } .weui-btn_mini { display: inline-block; width: auto; padding: 0 .75em; line-height: 2; font-size: 16px } .weui-btn:not(.weui-btn_mini)+.weui-btn:not(.weui-btn_mini) { margin-top: 16px } .weui-btn.weui-btn_inline+.weui-btn.weui-btn_inline { margin-top: auto; margin-left: 16px } .weui-btn-area { margin: 48px 16px 8px } .weui-btn-area_inline { display: -webkit-box; display: -webkit-flex; display: flex } .weui-btn-area_inline .weui-btn { margin-top: auto; margin-right: 16px; width: 100%; -webkit-box-flex: 1; -webkit-flex: 1; flex: 1 } .weui-btn-area_inline .weui-btn:last-child { margin-right: 0 } .weui-btn_reset { background: transparent; border: 0; padding: 0; outline: 0 } .weui-btn_icon { font-size: 0 } .weui-btn_icon:active [class*=weui-icon-] { color: var(--weui-FG-1) } .weui-cells { margin-top: 8px; background-color: var(--weui-BG-2); line-height: 1.41176471; font-size: 17px; overflow: hidden; position: relative } .weui-cells:before { top: 0; border-top: 1px solid var(--weui-FG-3); -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleY(.5); transform: scaleY(.5) } .weui-cells:after, .weui-cells:before { content: " "; position: absolute; left: 0; right: 0; height: 1px; color: var(--weui-FG-3); z-index: 2 } .weui-cells:after { bottom: 0; border-bottom: 1px solid var(--weui-FG-3); -webkit-transform-origin: 0 100%; transform-origin: 0 100%; -webkit-transform: scaleY(.5); transform: scaleY(.5) } .weui-cells__title { margin-top: 16px; margin-bottom: 3px; padding-left: 16px; padding-right: 16px; color: var(--weui-FG-1); font-size: 14px; line-height: 1.4 } .weui-cells__title+.weui-cells { margin-top: 0 } .weui-cells__tips { margin-top: 8px; color: var(--weui-FG-1); padding-left: 16px; padding-right: 16px; font-size: 14px; line-height: 1.4 } .weui-cells__tips a, .weui-cells__tips navigator { color: var(--weui-LINK) } .weui-cells__tips navigator { display: inline } .weui-cell { padding: 16px; position: relative; display: -webkit-box; display: -webkit-flex; display: flex; -webkit-box-align: center; -webkit-align-items: center; align-items: center } .weui-cell:before { content: " "; position: absolute; left: 0; top: 0; right: 0; height: 1px; border-top: 1px solid var(--weui-FG-3); color: var(--weui-FG-3); -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleY(.5); transform: scaleY(.5); left: 16px; z-index: 2 } .weui-cell:first-child:before { display: none } .weui-cell_active:active { background-color: var(--weui-BG-COLOR-ACTIVE) } .weui-cell_primary { -webkit-box-align: start; -webkit-align-items: flex-start; align-items: flex-start } .weui-cell__bd { -webkit-box-flex: 1; -webkit-flex: 1; flex: 1 } .weui-cell__ft { text-align: right; color: var(--weui-FG-1) } .weui-cell_swiped { display: block; padding: 0 } .weui-cell_swiped>.weui-cell__bd { position: relative; z-index: 1; background-color: var(--weui-BG-2) } .weui-cell_swiped>.weui-cell__ft { position: absolute; right: 0; top: 0; bottom: 0; display: -webkit-box; display: -webkit-flex; display: flex; color: #fff } .weui-swiped-btn { display: block; padding: 16px 1em; line-height: 1.41176471; color: inherit } .weui-swiped-btn_default { background-color: var(--weui-BG-0) } .weui-swiped-btn_warn { background-color: var(--weui-RED) } .weui-cell_access { -webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: inherit } .weui-cell_access:active { background-color: var(--weui-BG-COLOR-ACTIVE) } .weui-cell_access .weui-cell__ft { padding-right: 22px; position: relative } .weui-cell_access .weui-cell__ft:after { content: " "; width: 12px; height: 24px; -webkit-mask-position: 0 0; mask-position: 0 0; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-size: 100%; mask-size: 100%; background-color: currentColor; color: var(--weui-FG-2); -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E); position: absolute; top: 50%; right: 0; margin-top: -12px } .weui-cell_link { color: var(--weui-LINK); font-size: 17px } .weui-cell_link:first-child:before { display: block } .weui-check__label { -webkit-tap-highlight-color: rgba(0, 0, 0, 0) } .weui-check__label:active { background-color: var(--weui-BG-COLOR-ACTIVE) } .weui-check { position: absolute; left: -9999px } .weui-cells_radio .weui-cell__ft { padding-left: 16px; font-size: 0 } .weui-cells_radio .weui-check+.weui-icon-checked { min-width: 16px; color: transparent } .weui-cells_radio .weui-check:checked+.weui-icon-checked, .weui-cells_radio .weui-check[aria-checked=true]+.weui-icon-checked { color: var(--weui-BRAND); -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.657%2018.435L3%2012.778l1.414-1.414%204.95%204.95L20.678%205l1.414%201.414-12.02%2012.021a1%201%200%2001-1.415%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.657%2018.435L3%2012.778l1.414-1.414%204.95%204.95L20.678%205l1.414%201.414-12.02%2012.021a1%201%200%2001-1.415%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E) } .weui-cells_checkbox .weui-check__label:before { left: 55px } .weui-cells_checkbox .weui-cell__hd { padding-right: 16px; font-size: 0 } .weui-cells_checkbox .weui-icon-checked { color: var(--weui-FG-2); -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%221000%22%20height%3D%221000%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M500%20916.667C269.881%20916.667%2083.333%20730.119%2083.333%20500%2083.333%20269.881%20269.881%2083.333%20500%2083.333c230.119%200%20416.667%20186.548%20416.667%20416.667%200%20230.119-186.548%20416.667-416.667%20416.667zm0-50c202.504%200%20366.667-164.163%20366.667-366.667%200-202.504-164.163-366.667-366.667-366.667-202.504%200-366.667%20164.163-366.667%20366.667%200%20202.504%20164.163%20366.667%20366.667%20366.667z%22%20fill-rule%3D%22evenodd%22%20fill-opacity%3D%22.9%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%221000%22%20height%3D%221000%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M500%20916.667C269.881%20916.667%2083.333%20730.119%2083.333%20500%2083.333%20269.881%20269.881%2083.333%20500%2083.333c230.119%200%20416.667%20186.548%20416.667%20416.667%200%20230.119-186.548%20416.667-416.667%20416.667zm0-50c202.504%200%20366.667-164.163%20366.667-366.667%200-202.504-164.163-366.667-366.667-366.667-202.504%200-366.667%20164.163-366.667%20366.667%200%20202.504%20164.163%20366.667%20366.667%20366.667z%22%20fill-rule%3D%22evenodd%22%20fill-opacity%3D%22.9%22%2F%3E%3C%2Fsvg%3E) } .weui-cells_checkbox .weui-check:checked+.weui-icon-checked, .weui-cells_checkbox .weui-check[aria-checked=true]+.weui-icon-checked { color: var(--weui-BRAND); -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-1.177-7.86l-2.765-2.767L7%2012.431l3.119%203.121a1%201%200%20001.414%200l5.952-5.95-1.062-1.062-5.6%205.6z%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-1.177-7.86l-2.765-2.767L7%2012.431l3.119%203.121a1%201%200%20001.414%200l5.952-5.95-1.062-1.062-5.6%205.6z%22%2F%3E%3C%2Fsvg%3E) } .weui-label { display: block; width: 105px; word-wrap: break-word; word-break: break-all } .weui-input { width: 100%; border: 0; outline: 0; -webkit-appearance: none; background-color: transparent; font-size: inherit; color: inherit; height: 1.41176471em; line-height: 1.41176471 } .weui-input::-webkit-inner-spin-button, .weui-input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0 } .weui-input:focus:not(:placeholder-shown)+.weui-btn_input-clear { display: inline } .weui-input::-webkit-input-placeholder, .weui-input__placeholder { color: var(--weui-FG-2) } .weui-input::placeholder, .weui-input__placeholder { color: var(--weui-FG-2) } .weui-textarea { display: block; border: 0; resize: none; background: transparent; width: 100%; color: inherit; font-size: 1em; line-height: inherit; outline: 0 } .weui-textarea-counter { color: var(--weui-FG-2); text-align: right; font-size: 14px } .weui-cell_warn .weui-textarea-counter { color: var(--weui-RED) } .weui-cells_form .weui-cell_disabled:active, .weui-cells_form .weui-cell_readonly:active, .weui-cells_form .weui-cell_switch:active, .weui-cells_form .weui-cell_vcode:active { background-color: transparent } .weui-cells_form .weui-cell__ft { font-size: 0 } .weui-cells_form .weui-icon-warn { display: none } .weui-cells_form input, .weui-cells_form label[for], .weui-cells_form textarea { -webkit-tap-highlight-color: rgba(0, 0, 0, 0) } .weui-cell_warn { color: var(--weui-RED) } .weui-cell_warn .weui-icon-warn { display: inline-block } .weui-cell_disabled .weui-input:disabled, .weui-cell_disabled .weui-textarea:disabled, .weui-cell_readonly .weui-input:disabled, .weui-cell_readonly .weui-textarea:disabled { opacity: 1; -webkit-text-fill-color: var(--weui-FG-1) } .weui-cell_disabled .weui-input[disabled], .weui-cell_disabled .weui-input[readonly], .weui-cell_disabled .weui-textarea[disabled], .weui-cell_disabled .weui-textarea[readonly], .weui-cell_readonly .weui-input[disabled], .weui-cell_readonly .weui-input[readonly], .weui-cell_readonly .weui-textarea[disabled], .weui-cell_readonly .weui-textarea[readonly] { color: var(--weui-FG-1) } .weui-btn_input-clear { display: none; padding-left: 8px } .weui-btn_input-clear [class*=weui-icon-] { width: 18px } .weui-form-preview { position: relative; background-color: var(--weui-BG-2) } .weui-form-preview:before { top: 0; border-top: 1px solid var(--weui-FG-3); -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleY(.5); transform: scaleY(.5) } .weui-form-preview:after, .weui-form-preview:before { content: " "; position: absolute; left: 0; right: 0; height: 1px; color: var(--weui-FG-3) } .weui-form-preview:after { bottom: 0; border-bottom: 1px solid var(--weui-FG-3); -webkit-transform-origin: 0 100%; transform-origin: 0 100%; -webkit-transform: scaleY(.5); transform: scaleY(.5) } .weui-form-preview__hd { position: relative; padding: 16px; text-align: right; line-height: 2.5em } .weui-form-preview__hd:after { content: " "; position: absolute; left: 0; bottom: 0; right: 0; height: 1px; border-bottom: 1px solid var(--weui-FG-3); color: var(--weui-FG-3); -webkit-transform-origin: 0 100%; transform-origin: 0 100%; -webkit-transform: scaleY(.5); transform: scaleY(.5); left: 16px } .weui-form-preview__hd .weui-form-preview__value { font-style: normal; font-size: 1.6em } .weui-form-preview__bd { padding: 16px; font-size: .9em; text-align: right; color: var(--weui-FG-1); line-height: 2 } .weui-form-preview__ft { position: relative; line-height: 50px; display: -webkit-box; display: -webkit-flex; display: flex } .weui-form-preview__ft:before { content: " "; position: absolute; left: 0; top: 0; right: 0; height: 1px; border-top: 1px solid var(--weui-DIALOG-LINE-COLOR); color: var(--weui-DIALOG-LINE-COLOR); -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleY(.5); transform: scaleY(.5) } .weui-form-preview__item { overflow: hidden } .weui-form-preview__label { float: left; margin-right: 1em; min-width: 4em; color: var(--weui-FG-1); text-align: justify; text-align-last: justify } .weui-form-preview__value { display: block; overflow: hidden; word-break: normal; word-wrap: break-word; color: var(--weui-FG-0) } .weui-form-preview__btn { position: relative; display: block; -webkit-box-flex: 1; -webkit-flex: 1; flex: 1; color: var(--weui-LINK); text-align: center; -webkit-tap-highlight-color: rgba(0, 0, 0, 0) } button.weui-form-preview__btn { background-color: transparent; border: 0; outline: 0; line-height: inherit; font-size: inherit } .weui-form-preview__btn:active { background-color: var(--weui-BG-COLOR-ACTIVE) } .weui-form-preview__btn:after { content: " "; position: absolute; left: 0; top: 0; width: 1px; bottom: 0; border-left: 1px solid var(--weui-DIALOG-LINE-COLOR); color: var(--weui-DIALOG-LINE-COLOR); -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleX(.5); transform: scaleX(.5) } .weui-form-preview__btn:first-child:after { display: none } .weui-form-preview__btn_default { color: var(--weui-FG-HALF) } .weui-form-preview__btn_primary { color: var(--weui-LINK) } .weui-cell_select { padding: 0 } .weui-cell_select .weui-select { padding-right: 30px } .weui-cell_select .weui-cell__bd:after { content: " "; width: 12px; height: 24px; -webkit-mask-position: 0 0; mask-position: 0 0; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-size: 100%; mask-size: 100%; background-color: currentColor; color: var(--weui-FG-2); -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E); position: absolute; top: 50%; right: 16px; margin-top: -12px } .weui-select { -webkit-appearance: none; border: 0; outline: 0; background-color: transparent; width: 100%; font-size: inherit; height: 56px; line-height: 56px; position: relative; z-index: 1; padding-left: 16px; color: var(--weui-FG-0) } .weui-cell_select-before { padding-right: 16px } .weui-cell_select-before .weui-select { width: 105px; box-sizing: border-box } .weui-cell_select-before .weui-cell__hd { position: relative } .weui-cell_select-before .weui-cell__hd:after { content: " "; position: absolute; right: 0; top: 0; width: 1px; bottom: 0; border-right: 1px solid var(--weui-FG-3); color: var(--weui-FG-3); -webkit-transform-origin: 100% 0; transform-origin: 100% 0; -webkit-transform: scaleX(.5); transform: scaleX(.5) } .weui-cell_select-before .weui-cell__hd:before { content: " "; width: 12px; height: 24px; -webkit-mask-position: 0 0; mask-position: 0 0; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-size: 100%; mask-size: 100%; background-color: currentColor; color: var(--weui-FG-2); -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E); position: absolute; top: 50%; right: 16px; margin-top: -12px } .weui-cell_select-before .weui-cell__bd { padding-left: 16px } .weui-cell_select-before .weui-cell__bd:after { display: none } .weui-cell_select-before.weui-cell_access .weui-cell__hd { line-height: 56px; padding-left: 32px } .weui-cell_select-after { padding-left: 16px } .weui-cell_select-after .weui-select { padding-left: 0 } .weui-cell_select-after.weui-cell_access .weui-cell__bd { line-height: 56px } .weui-cell_vcode { padding-top: 0; padding-right: 0; padding-bottom: 0 } .weui-vcode-btn, .weui-vcode-img { margin-left: 5px; height: 56px; vertical-align: middle } .weui-vcode-btn { display: inline-block; padding: 0 .6em 0 .7em; line-height: 56px; font-size: 17px; color: var(--weui-LINK); position: relative } .weui-vcode-btn:before { content: " "; position: absolute; left: 0; top: 0; width: 1px; bottom: 0; border-left: 1px solid var(--weui-FG-3); color: var(--weui-FG-3); -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleX(.5); transform: scaleX(.5) } button.weui-vcode-btn { background-color: transparent; border: 0; outline: 0 } .weui-vcode-btn:active { color: #767676 } .weui-gallery { display: none; position: fixed; top: 0; right: 0; bottom: 0; left: 0; background-color: #000; z-index: 1000 } .weui-gallery__img, .weui-gallery__opr { position: absolute; left: 0; left: constant(safe-area-inset-left); left: env(safe-area-inset-left); right: 0; right: constant(safe-area-inset-right); right: env(safe-area-inset-right) } .weui-gallery__img { top: 0; top: constant(safe-area-inset-top); top: env(safe-area-inset-top); bottom: 60px; bottom: calc(60px + constant(safe-area-inset-bottom)); bottom: calc(60px + env(safe-area-inset-bottom)); background: 50% no-repeat; background-size: contain } .weui-gallery__opr { position: absolute; bottom: 0; padding-bottom: 0; padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); background-color: #0d0d0d; color: var(--weui-WHITE); line-height: 60px; text-align: center } .weui-gallery__del { display: block } .weui-cell_switch { padding-top: 12px; padding-bottom: 12px } .weui-switch { -webkit-appearance: none; appearance: none } .weui-switch, .weui-switch-cp__box { position: relative; width: 52px; height: 32px; border: 2px solid var(--weui-FG-3); outline: 0; border-radius: 16px; box-sizing: border-box; -webkit-transition: background-color .1s, border .1s; transition: background-color .1s, border .1s } .weui-switch-cp__box:before, .weui-switch:before { content: " "; position: absolute; top: 0; left: 0; bottom: 0; right: 0; border-radius: 15px; background-color: var(--weui-BG-3); -webkit-transition: -webkit-transform .35s cubic-bezier(.45, 1, .4, 1); transition: -webkit-transform .35s cubic-bezier(.45, 1, .4, 1); transition: transform .35s cubic-bezier(.45, 1, .4, 1); transition: transform .35s cubic-bezier(.45, 1, .4, 1), -webkit-transform .35s cubic-bezier(.45, 1, .4, 1) } .weui-switch-cp__box:after, .weui-switch:after { content: " "; position: absolute; top: 0; left: 0; width: 28px; height: 28px; border-radius: 15px; background-color: #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, .4); -webkit-transition: -webkit-transform .35s cubic-bezier(.4, .4, .25, 1.35); transition: -webkit-transform .35s cubic-bezier(.4, .4, .25, 1.35); transition: transform .35s cubic-bezier(.4, .4, .25, 1.35); transition: transform .35s cubic-bezier(.4, .4, .25, 1.35), -webkit-transform .35s cubic-bezier(.4, .4, .25, 1.35) } .weui-switch-cp__input:checked+.weui-switch-cp__box, .weui-switch-cp__input[aria-checked=true]+.weui-switch-cp__box, .weui-switch:checked { border-color: var(--weui-BRAND); background-color: var(--weui-BRAND) } .weui-switch-cp__input:checked+.weui-switch-cp__box:before, .weui-switch-cp__input[aria-checked=true]+.weui-switch-cp__box:before, .weui-switch:checked:before { -webkit-transform: scale(0); transform: scale(0) } .weui-switch-cp__input:checked+.weui-switch-cp__box:after, .weui-switch-cp__input[aria-checked=true]+.weui-switch-cp__box:after, .weui-switch:checked:after { -webkit-transform: translateX(20px); transform: translateX(20px) } .weui-switch-cp__input { position: absolute; left: -9999px } .weui-switch-cp__box { display: block } .weui-uploader { -webkit-box-flex: 1; -webkit-flex: 1; flex: 1 } .weui-uploader__hd { display: -webkit-box; display: -webkit-flex; display: flex; padding-bottom: 16px; -webkit-box-align: center; -webkit-align-items: center; align-items: center } .weui-uploader__title { -webkit-box-flex: 1; -webkit-flex: 1; flex: 1 } .weui-uploader__info { color: var(--weui-FG-2) } .weui-uploader__bd { margin-bottom: -8px; margin-right: -8px; overflow: hidden } .weui-uploader__files { list-style: none } .weui-uploader__file { float: left; margin-right: 8px; margin-bottom: 8px; width: 96px; height: 96px; background: no-repeat 50%; background-size: cover } .weui-uploader__file_status { position: relative } .weui-uploader__file_status:before { content: " "; position: absolute; top: 0; right: 0; bottom: 0; left: 0; background-color: rgba(0, 0, 0, .5) } .weui-uploader__file_status .weui-uploader__file-content { display: block } .weui-uploader__file-content { display: none; position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); color: var(--weui-WHITE) } .weui-uploader__file-content .weui-icon-warn { display: inline-block } .weui-uploader__input-box { float: left; position: relative; margin-right: 8px; margin-bottom: 8px; width: 96px; height: 96px; box-sizing: border-box; background-color: #ededed } @media(prefers-color-scheme: dark) { .weui-uploader__input-box { background-color: #2e2e2e } } .weui-uploader__input-box:after, .weui-uploader__input-box:before { content: " "; position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); background-color: #a3a3a3 } @media(prefers-color-scheme: dark) { .weui-uploader__input-box:after, .weui-uploader__input-box:before { background-color: #6d6d6d } } .weui-uploader__input-box:before { width: 2px; height: 32px } .weui-uploader__input-box:after { width: 32px; height: 2px } .weui-uploader__input-box:active:after, .weui-uploader__input-box:active:before { opacity: .7 } .weui-uploader__input { position: absolute; z-index: 1; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; -webkit-tap-highlight-color: rgba(0, 0, 0, 0) } .weui-msg { padding-top: 48px; padding: calc(48px + constant(safe-area-inset-top)) constant(safe-area-inset-right) constant(safe-area-inset-bottom) constant(safe-area-inset-left); padding: calc(48px + env(safe-area-inset-top)) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left); text-align: center; line-height: 1.4; min-height: 100%; box-sizing: border-box; display: -webkit-box; display: -webkit-flex; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; flex-direction: column; background-color: var(--weui-BG-2) } .weui-msg a:not(.weui-btn) { color: var(--weui-LINK); display: inline-block; vertical-align: baseline } .weui-msg__icon-area { margin-bottom: 32px } .weui-msg__text-area { margin-bottom: 32px; padding: 0 32px; -webkit-box-flex: 1; -webkit-flex: 1; flex: 1; line-height: 1.6 } .weui-msg__text-area:first-child { padding-top: 96px } .weui-msg__title { font-weight: 700; font-size: 22px } .weui-msg__desc, .weui-msg__title { margin-bottom: 16px; color: var(--weui-FG-0); word-wrap: break-word; word-break: break-all } .weui-msg__desc { font-size: 17px } .weui-msg__desc-primary { font-size: 14px; color: var(--weui-FG-1); word-wrap: break-word; word-break: break-all; margin-bottom: 16px } .weui-msg__opr-area { margin-bottom: 16px } .weui-msg__opr-area .weui-btn-area { margin: 0 } .weui-msg__opr-area .weui-btn+.weui-btn { margin-bottom: 16px } .weui-msg__opr-area:last-child { margin-bottom: 96px } .weui-msg__opr-area+.weui-msg__extra-area { margin-top: 48px } .weui-msg__tips-area { margin-bottom: 16px; padding: 0 40px } .weui-msg__opr-area+.weui-msg__tips-area { margin-bottom: 48px } .weui-msg__tips-area:last-child { margin-bottom: 64px } .weui-msg__extra-area, .weui-msg__tips { font-size: 12px; color: var(--weui-FG-1) } .weui-msg__extra-area { margin-bottom: 24px } .weui-msg__extra-area a, .weui-msg__extra-area navigator { color: var(--weui-LINK) } .weui-msg__extra-area navigator { display: inline } .weui-cells__group_form:first-child .weui-cells__title { margin-top: 0 } .weui-cells__group_form .weui-cells__title { margin-top: 24px; margin-bottom: 8px; padding: 0 32px } .weui-cells__group_form .weui-cell:before, .weui-cells__group_form .weui-cells:before { left: 32px; right: 32px } .weui-cells__group_form .weui-cells_checkbox .weui-check__label:before { left: 72px } .weui-cells__group_form .weui-cells:after { left: 32px; right: 32px } .weui-cells__group_form .weui-cell { padding: 16px 32px } .weui-cells__group_form .weui-cell:not(.weui-cell_link) { color: var(--weui-FG-0) } .weui-cells__group_form .weui-cell__hd { padding-right: 16px } .weui-cells__group_form .weui-cell__ft { padding-left: 16px } .weui-cells__group_form .weui-cell_warn input { color: var(--weui-RED) } .weui-cells__group_form .weui-label { max-width: 5em; margin-right: 8px } .weui-cells__group_form .weui-cells__tips { margin-top: 8px; padding: 0 32px; color: rgba(0, 0, 0, .3) } .weui-cells__group_form .weui-cells__tips a { font-weight: 700 } .weui-cells__group_form .weui-cell_vcode { padding: 12px 32px } .weui-cells__group_form .weui-vcode-btn { font-size: 16px; padding: 0 12px; margin-left: 0; height: auto; width: auto; line-height: 2em; color: var(--weui-BTN-DEFAULT-COLOR); background-color: var(--weui-BTN-DEFAULT-BG) } .weui-cells__group_form .weui-vcode-btn:before { display: none } .weui-cells__group_form .weui-cell_select { padding: 0 } .weui-cells__group_form .weui-cell_select .weui-select { padding: 0 32px } .weui-cells__group_form .weui-cell_select .weui-cell__bd:after { right: 32px } .weui-cells__group_form .weui-cell_select-before .weui-label { margin-right: 24px } .weui-cells__group_form .weui-cell_select-before .weui-select { padding-right: 24px; box-sizing: initial } .weui-cells__group_form .weui-cell_select-after { padding-left: 32px } .weui-cells__group_form .weui-cell_select-after .weui-select { padding-left: 0 } .weui-cells__group_form .weui-cell_switch { padding: 12px 32px } .weui-form { padding: 56px 0 0; padding: calc(56px + constant(safe-area-inset-top)) constant(safe-area-inset-right) constant(safe-area-inset-bottom) constant(safe-area-inset-left); padding: calc(56px + env(safe-area-inset-top)) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left); display: -webkit-box; display: -webkit-flex; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; flex-direction: column; line-height: 1.4; min-height: 100%; box-sizing: border-box; background-color: var(--weui-BG-2) } .weui-form .weui-footer, .weui-form .weui-footer__link { font-size: 14px } .weui-form .weui-agree { padding: 0 } .weui-form__text-area { padding: 0 32px; color: var(--weui-FG-0); text-align: center } .weui-form__control-area { -webkit-box-flex: 1; -webkit-flex: 1; flex: 1; margin: 48px 0 } .weui-form__tips-area { overflow: hidden } .weui-form__extra-area, .weui-form__tips-area { margin-bottom: 24px; text-align: center } .weui-form__opr-area { margin-bottom: 64px } .weui-form__opr-area:last-child { margin-bottom: 96px } .weui-form__title { font-size: 22px; font-weight: 700; line-height: 1.36 } .weui-form__desc { font-size: 17px; margin-top: 16px } .weui-form__tips { color: var(--weui-FG-1); font-size: 14px } .weui-form__tips a, .weui-form__tips navigator { color: var(--weui-LINK) } .weui-form__tips navigator { display: inline } .weui-article { padding: 24px 16px; padding: 24px calc(16px + constant(safe-area-inset-right)) calc(24px + constant(safe-area-inset-bottom)) calc(16px + constant(safe-area-inset-left)); padding: 24px calc(16px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(16px + env(safe-area-inset-left)); font-size: 17px; color: var(--weui-FG-0) } .weui-article__section { margin-bottom: 1.5em } .weui-article__h1 { font-size: 22px; font-weight: 700; margin-bottom: .9em; line-height: 1.4 } .weui-article__h2 { font-size: 17px } .weui-article__h2, .weui-article__h3 { font-weight: 700; margin-bottom: .34em; line-height: 1.4 } .weui-article__h3 { font-size: 15px } .weui-article__p { margin: 0 0 .8em } .weui-tabbar { display: -webkit-box; display: -webkit-flex; display: flex; position: relative; z-index: 500; background-color: var(--weui-BG-1) } .weui-tabbar:before { content: " "; position: absolute; left: 0; top: 0; right: 0; height: 1px; border-top: 1px solid var(--weui-FG-3); color: var(--weui-FG-3); -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleY(.5); transform: scaleY(.5) } .weui-tabbar__item { display: block; -webkit-box-flex: 1; -webkit-flex: 1; flex: 1; padding: 8px 0; padding-bottom: calc(8px + constant(safe-area-inset-bottom)); padding-bottom: calc(8px + env(safe-area-inset-bottom)); font-size: 0; color: var(--weui-FG-1); text-align: center; -webkit-tap-highlight-color: rgba(0, 0, 0, 0) } .weui-tabbar__item:first-child { padding-left: constant(safe-area-inset-left); padding-left: env(safe-area-inset-left) } .weui-tabbar__item:last-child { padding-right: constant(safe-area-inset-right); padding-right: env(safe-area-inset-right) } .weui-tabbar__item.weui-bar__item_on .weui-tabbar__icon, .weui-tabbar__item.weui-bar__item_on .weui-tabbar__icon>i, .weui-tabbar__item.weui-bar__item_on .weui-tabbar__label { color: var(--weui-BRAND) } .weui-tabbar__icon { display: inline-block; width: 28px; height: 28px; margin-bottom: 2px } .weui-tabbar__icon>i, i.weui-tabbar__icon { font-size: 24px; color: var(--weui-FG-1) } .weui-tabbar__icon img { width: 100%; height: 100% } .weui-tabbar__label { color: var(--weui-FG-0); font-size: 10px; line-height: 1.4 } .weui-navbar { display: -webkit-box; display: -webkit-flex; display: flex; position: relative; z-index: 500; background-color: var(--weui-BG-2); padding-top: constant(safe-area-inset-top); padding-top: env(safe-area-inset-top) } .weui-navbar:after { content: " "; position: absolute; left: 0; bottom: 0; right: 0; height: 1px; border-bottom: 1px solid var(--weui-FG-3); color: var(--weui-FG-3); -webkit-transform-origin: 0 100%; transform-origin: 0 100%; -webkit-transform: scaleY(.5); transform: scaleY(.5) } .weui-navbar+.weui-tab__panel { padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom) } .weui-navbar__item { position: relative; display: block; -webkit-box-flex: 1; -webkit-flex: 1; flex: 1; padding: 16px 0; padding-top: calc(16px + constant(safe-area-inset-top)); padding-top: calc(16px + env(safe-area-inset-top)); text-align: center; font-size: 17px; line-height: 1.41176471; -webkit-tap-highlight-color: rgba(0, 0, 0, 0) } .weui-navbar__item.weui-bar__item_on, .weui-navbar__item:active { background-color: var(--weui-BG-COLOR-ACTIVE) } .weui-navbar__item:after { content: " "; position: absolute; right: 0; top: 0; width: 1px; bottom: 0; border-right: 1px solid var(--weui-FG-3); color: var(--weui-FG-3); -webkit-transform-origin: 100% 0; transform-origin: 100% 0; -webkit-transform: scaleX(.5); transform: scaleX(.5) } .weui-navbar__item:first-child { padding-left: constant(safe-area-inset-left); padding-left: env(safe-area-inset-left) } .weui-navbar__item:last-child { padding-right: constant(safe-area-inset-right); padding-right: env(safe-area-inset-right) } .weui-navbar__item:last-child:after { display: none } .weui-tab { display: -webkit-box; display: -webkit-flex; display: flex; height: 100%; box-sizing: border-box; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; flex-direction: column } .weui-tab__panel { box-sizing: border-box; -webkit-box-flex: 1; -webkit-flex: 1; flex: 1; overflow: auto; -webkit-overflow-scrolling: touch } .weui-tab__content { display: none } .weui-progress { display: -webkit-box; display: -webkit-flex; display: flex; -webkit-box-align: center; -webkit-align-items: center; align-items: center } .weui-progress__bar { background-color: var(--weui-BG-0); height: 3px; -webkit-box-flex: 1; -webkit-flex: 1; flex: 1 } .weui-progress__inner-bar { width: 0; height: 100%; background-color: var(--weui-BRAND) } .weui-progress__opr { display: block; margin-left: 15px; font-size: 0 } .weui-panel { background-color: var(--weui-BG-2); margin-top: 10px; position: relative; overflow: hidden } .weui-panel:first-child { margin-top: 0 } .weui-panel:before { top: 0; border-top: 1px solid var(--weui-FG-3); -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleY(.5); transform: scaleY(.5) } .weui-panel:after, .weui-panel:before { content: " "; position: absolute; left: 0; right: 0; height: 1px; color: var(--weui-FG-3) } .weui-panel:after { bottom: 0; border-bottom: 1px solid var(--weui-FG-3); -webkit-transform-origin: 0 100%; transform-origin: 0 100%; -webkit-transform: scaleY(.5); transform: scaleY(.5) } .weui-panel__hd { padding: 16px 16px 13px; color: var(--weui-FG-0); font-size: 15px; font-weight: 700; position: relative } .weui-panel__hd:after { content: " "; position: absolute; left: 0; bottom: 0; right: 0; height: 1px; border-bottom: 1px solid var(--weui-FG-3); color: var(--weui-FG-3); -webkit-transform-origin: 0 100%; transform-origin: 0 100%; -webkit-transform: scaleY(.5); transform: scaleY(.5); left: 15px } .weui-media-box { padding: 16px; position: relative } .weui-media-box:before { content: " "; position: absolute; left: 0; top: 0; right: 0; height: 1px; border-top: 1px solid var(--weui-FG-3); color: var(--weui-FG-3); -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleY(.5); transform: scaleY(.5); left: 16px } .weui-media-box:first-child:before { display: none } a.weui-media-box { color: #000; -webkit-tap-highlight-color: rgba(0, 0, 0, 0) } a.weui-media-box:active { background-color: var(--weui-BG-COLOR-ACTIVE) } .weui-media-box__title { font-weight: 400; font-size: 17px; color: var(--weui-FG-0); width: auto; white-space: nowrap; word-wrap: normal; word-wrap: break-word; word-break: break-all } .weui-media-box__desc, .weui-media-box__title { line-height: 1.4; overflow: hidden; text-overflow: ellipsis } .weui-media-box__desc { color: var(--weui-FG-2); font-size: 14px; padding-top: 4px; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2 } .weui-media-box__info { margin-top: 16px; padding-bottom: 4px; font-size: 13px; color: var(--weui-FG-2); line-height: 1em; list-style: none; overflow: hidden } .weui-media-box__info__meta { float: left; padding-right: 1em } .weui-media-box__info__meta_extra { padding-left: 1em; border-left: 1px solid var(--weui-FG-2) } .weui-media-box_appmsg { display: -webkit-box; display: -webkit-flex; display: flex; -webkit-box-align: center; -webkit-align-items: center; align-items: center } .weui-media-box_appmsg .weui-media-box__hd { margin-right: 16px; width: 60px; height: 60px; line-height: 60px; text-align: center } .weui-media-box_appmsg .weui-media-box__thumb { width: 100%; max-height: 100%; vertical-align: top } .weui-media-box_appmsg .weui-media-box__bd { -webkit-box-flex: 1; -webkit-flex: 1; flex: 1; min-width: 0 } .weui-media-box_small-appmsg { padding: 0 } .weui-media-box_small-appmsg .weui-cells { margin-top: 0 } .weui-media-box_small-appmsg .weui-cells:before { display: none } .weui-grids { position: relative; overflow: hidden } .weui-grids:before { right: 0; height: 1px; border-top: 1px solid var(--weui-FG-3); -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleY(.5); transform: scaleY(.5) } .weui-grids:after, .weui-grids:before { content: " "; position: absolute; left: 0; top: 0; color: var(--weui-FG-3) } .weui-grids:after { width: 1px; bottom: 0; border-left: 1px solid var(--weui-FG-3); -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleX(.5); transform: scaleX(.5) } .weui-grid { position: relative; float: left; padding: 20px 10px; width: 33.33333333%; box-sizing: border-box } .weui-grid:before { top: 0; width: 1px; border-right: 1px solid var(--weui-FG-3); -webkit-transform-origin: 100% 0; transform-origin: 100% 0; -webkit-transform: scaleX(.5); transform: scaleX(.5) } .weui-grid:after, .weui-grid:before { content: " "; position: absolute; right: 0; bottom: 0; color: var(--weui-FG-3) } .weui-grid:after { left: 0; height: 1px; border-bottom: 1px solid var(--weui-FG-3); -webkit-transform-origin: 0 100%; transform-origin: 0 100%; -webkit-transform: scaleY(.5); transform: scaleY(.5) } .weui-grid:active { background-color: var(--weui-BG-COLOR-ACTIVE) } .weui-grid__icon { width: 28px; height: 28px; margin: 0 auto } .weui-grid__icon img { display: block; width: 100%; height: 100% } .weui-grid__icon+.weui-grid__label { margin-top: 4px } .weui-grid__label { display: block; color: var(--weui-FG-0); white-space: nowrap; text-overflow: ellipsis; overflow: hidden } .weui-footer, .weui-grid__label { text-align: center; font-size: 14px } .weui-footer { color: var(--weui-FG-2); line-height: 1.4 } .weui-footer a, .weui-footer navigator { color: var(--weui-LINK) } .weui-footer navigator { display: inline } .weui-footer_fixed-bottom { position: fixed; bottom: 0; left: 0; right: 0; padding-top: 16px; padding-bottom: 16px; padding-bottom: calc(16px + constant(safe-area-inset-bottom)); padding-bottom: calc(16px + env(safe-area-inset-bottom)); left: constant(safe-area-inset-left); left: env(safe-area-inset-left); right: constant(safe-area-inset-right); right: env(safe-area-inset-right) } .weui-footer__links { font-size: 0 } .weui-footer__link { display: inline-block; vertical-align: top; margin: 0 8px; position: relative; font-size: 14px } .weui-footer__link:before { content: " "; position: absolute; left: 0; top: 0; width: 1px; bottom: 0; border-left: 1px solid var(--weui-FG-3); color: var(--weui-FG-3); -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleX(.5); transform: scaleX(.5); left: -8px; top: .36em; bottom: .36em } .weui-footer__link:first-child:before { display: none } .weui-footer__text { padding: 0 16px; font-size: 12px } .weui-flex { display: -webkit-box; display: -webkit-flex; display: flex } .weui-flex__item { -webkit-box-flex: 1; -webkit-flex: 1; flex: 1 } .weui-dialog { position: fixed; z-index: 5000; top: 50%; left: 16px; right: 16px; -webkit-transform: translateY(-50%); transform: translateY(-50%); background-color: var(--weui-BG-2); text-align: center; border-radius: 12px; overflow: hidden; display: -webkit-box; display: -webkit-flex; display: flex; -webkit-flex-direction: column; -webkit-box-orient: vertical; -webkit-box-direction: normal; flex-direction: column; max-height: 90% } .weui-dialog__hd { padding: 32px 24px 16px } .weui-dialog__title { font-weight: 700; font-size: 17px; line-height: 1.4 } .weui-dialog__bd { overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 0 24px; margin-bottom: 32px; font-size: 17px; line-height: 1.4; word-wrap: break-word; -webkit-hyphens: auto; hyphens: auto; color: var(--weui-FG-1) } .weui-dialog__bd:first-child { min-height: 40px; padding: 32px 24px 0; font-weight: 700; color: var(--weui-FG-0); -webkit-flex-direction: column; -webkit-box-orient: vertical; -webkit-box-direction: normal; flex-direction: column; -webkit-box-pack: center; -webkit-justify-content: center; justify-content: center } .weui-dialog__bd:first-child, .weui-dialog__ft { display: -webkit-box; display: -webkit-flex; display: flex } .weui-dialog__ft { position: relative; line-height: 56px; min-height: 56px; font-size: 17px } .weui-dialog__ft:after { content: " "; position: absolute; left: 0; top: 0; right: 0; height: 1px; border-top: 1px solid var(--weui-DIALOG-LINE-COLOR); color: var(--weui-DIALOG-LINE-COLOR); -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleY(.5); transform: scaleY(.5) } .weui-dialog__btn { display: block; -webkit-box-flex: 1; -webkit-flex: 1; flex: 1; color: var(--weui-LINK); font-weight: 700; text-decoration: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); position: relative } .weui-dialog__btn:active { background-color: var(--weui-BG-COLOR-ACTIVE) } .weui-dialog__btn:after { content: " "; position: absolute; left: 0; top: 0; width: 1px; bottom: 0; border-left: 1px solid var(--weui-DIALOG-LINE-COLOR); color: var(--weui-DIALOG-LINE-COLOR); -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleX(.5); transform: scaleX(.5) } .weui-dialog__btn:first-child:after { display: none } .weui-dialog__btn_default { color: var(--weui-FG-HALF) } .weui-skin_android .weui-dialog { text-align: left; box-shadow: 0 6px 30px 0 rgba(0, 0, 0, .1) } .weui-skin_android .weui-dialog__title { font-size: 22px; line-height: 1.4 } .weui-skin_android .weui-dialog__hd { text-align: left } .weui-skin_android .weui-dialog__bd { color: var(--weui-FG-1); text-align: left } .weui-skin_android .weui-dialog__bd:first-child { color: var(--weui-FG-0) } .weui-skin_android .weui-dialog__ft { display: block; text-align: right; line-height: 40px; min-height: 40px; padding: 0 24px 16px } .weui-skin_android .weui-dialog__ft:after { display: none } .weui-skin_android .weui-dialog__btn { display: inline-block; vertical-align: top; padding: 0 .8em } .weui-skin_android .weui-dialog__btn:after { display: none } .weui-skin_android .weui-dialog__btn:last-child { margin-right: -.8em } .weui-skin_android .weui-dialog__btn_default { color: var(--weui-FG-HALF) } @media screen and (min-width:352px) { .weui-dialog { width: 320px; margin: 0 auto } } .weui-half-screen-dialog { position: fixed; left: 0; right: 0; bottom: 0; max-height: 75%; z-index: 5000; line-height: 1.4; background-color: var(--weui-BG-2); border-top-left-radius: 12px; border-top-right-radius: 12px; overflow: hidden; padding: 0 24px; padding: 0 calc(24px + constant(safe-area-inset-right)) constant(safe-area-inset-bottom) calc(24px + constant(safe-area-inset-left)); padding: 0 calc(24px + env(safe-area-inset-right)) env(safe-area-inset-bottom) calc(24px + env(safe-area-inset-left)) } @media only screen and (max-height:558px) { .weui-half-screen-dialog { max-height: none } } .weui-half-screen-dialog__hd { font-size: 8px; height: 8em; display: -webkit-box; display: -webkit-flex; display: flex; -webkit-box-align: center; -webkit-align-items: center; align-items: center } .weui-half-screen-dialog__hd .weui-icon-btn { position: absolute; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%) } .weui-half-screen-dialog__hd .weui-icon-btn:active { opacity: .5 } .weui-half-screen-dialog__hd__side { position: relative; left: -8px } .weui-half-screen-dialog__hd__main { -webkit-box-flex: 1; -webkit-flex: 1; flex: 1 } .weui-half-screen-dialog__hd__side+.weui-half-screen-dialog__hd__main { text-align: center; padding: 0 40px } .weui-half-screen-dialog__hd__main+.weui-half-screen-dialog__hd__side { right: -8px; left: auto } .weui-half-screen-dialog__hd__main+.weui-half-screen-dialog__hd__side .weui-icon-btn { right: 0 } .weui-half-screen-dialog__title { display: block; color: var(--weui-FG-0); font-weight: 700; font-size: 15px } .weui-half-screen-dialog__subtitle { display: block; color: var(--weui-FG-1); font-size: 10px } .weui-half-screen-dialog__bd { word-wrap: break-word; -webkit-hyphens: auto; hyphens: auto; overflow-y: auto; padding-top: 4px; padding-bottom: 40px; font-size: 14px; color: var(--weui-FG-0) } .weui-half-screen-dialog__desc { font-size: 17px; font-weight: 700; color: var(--weui-FG-0); line-height: 1.4 } .weui-half-screen-dialog__tips { padding-top: 16px; font-size: 14px; color: var(--weui-FG-2); line-height: 1.4 } .weui-half-screen-dialog__ft { padding: 0 24px 32px; text-align: center } .weui-half-screen-dialog__ft .weui-btn:nth-last-child(n+2), .weui-half-screen-dialog__ft .weui-btn:nth-last-child(n+2)+.weui-btn { display: inline-block; vertical-align: top; margin: 0 8px; width: 120px } .weui-icon-btn { outline: 0; -webkit-appearance: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); border-width: 0; background-color: transparent; color: var(--weui-FG-0); font-size: 0 } .weui-icon-more { width: 24px; -webkit-mask: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M5 10.25a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5zm7 0a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5zm7 0a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5z'/%3E%3C/svg%3E") no-repeat 50% 50%; mask: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M5 10.25a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5zm7 0a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5zm7 0a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5z'/%3E%3C/svg%3E") no-repeat 50% 50%; -webkit-mask-size: cover; mask-size: cover } .weui-icon-btn_goback, .weui-icon-more { display: inline-block; vertical-align: middle; height: 24px; background-color: currentColor; color: var(--weui-FG-0) } .weui-icon-btn_goback { width: 12px; -webkit-mask: url("data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10%2019.438L8.955%2020.5l-7.666-7.79a1.02%201.02%200%20010-1.42L8.955%203.5%2010%204.563%202.682%2012%2010%2019.438z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E") no-repeat 50% 50%; mask: url("data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10%2019.438L8.955%2020.5l-7.666-7.79a1.02%201.02%200%20010-1.42L8.955%203.5%2010%204.563%202.682%2012%2010%2019.438z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E") no-repeat 50% 50%; -webkit-mask-size: cover; mask-size: cover } .weui-icon-btn_close { color: var(--weui-FG-0); display: inline-block; vertical-align: middle; width: 14px; height: 24px; -webkit-mask: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.25%2010.693L6.057%204.5%205%205.557l6.193%206.193L5%2017.943%206.057%2019l6.193-6.193L18.443%2019l1.057-1.057-6.193-6.193L19.5%205.557%2018.443%204.5z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E") no-repeat 50% 50%; mask: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.25%2010.693L6.057%204.5%205%205.557l6.193%206.193L5%2017.943%206.057%2019l6.193-6.193L18.443%2019l1.057-1.057-6.193-6.193L19.5%205.557%2018.443%204.5z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E") no-repeat 50% 50%; -webkit-mask-size: cover; mask-size: cover; background-color: currentColor } .weui-toast { position: fixed; z-index: 5000; width: 120px; height: 120px; top: 40%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); text-align: center; border-radius: 5px; color: hsla(0, 0%, 100%, .9); display: -webkit-box; display: -webkit-flex; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; flex-direction: column; -webkit-box-align: center; -webkit-align-items: center; align-items: center; -webkit-box-pack: center; -webkit-justify-content: center; justify-content: center; background-color: #4c4c4c } @media(prefers-color-scheme: dark) { .weui-toast { background-color: #606060 } } .weui-icon_toast { display: block } .weui-icon_toast.weui-icon-success-no-circle { color: hsla(0, 0%, 100%, .9); width: 55px; height: 55px } .weui-icon_toast.weui-loading { margin: 8px 0; width: 38px; height: 38px; vertical-align: baseline } .weui-toast__content { font-size: 14px } .weui-mask { background: rgba(0, 0, 0, .6) } .weui-mask, .weui-mask_transparent { position: fixed; z-index: 1000; top: 0; right: 0; left: 0; bottom: 0 } .weui-actionsheet { position: fixed; left: 0; bottom: 0; -webkit-transform: translateY(100%); transform: translateY(100%); -webkit-backface-visibility: hidden; backface-visibility: hidden; z-index: 5000; width: 100%; background-color: var(--weui-BG-1); -webkit-transition: -webkit-transform .3s; transition: -webkit-transform .3s; transition: transform .3s; transition: transform .3s, -webkit-transform .3s; border-top-left-radius: 12px; border-top-right-radius: 12px; overflow: hidden } .weui-actionsheet__title { position: relative; height: 56px; padding: 0 24px; display: -webkit-box; display: -webkit-flex; display: flex; -webkit-box-pack: center; -webkit-justify-content: center; justify-content: center; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; flex-direction: column; text-align: center; font-size: 12px; color: var(--weui-FG-1); line-height: 1.4; background: var(--weui-BG-2) } .weui-actionsheet__title:before { content: " "; position: absolute; left: 0; bottom: 0; right: 0; height: 1px; border-bottom: 1px solid var(--weui-FG-3); color: var(--weui-FG-3); -webkit-transform-origin: 0 100%; transform-origin: 0 100%; -webkit-transform: scaleY(.5); transform: scaleY(.5) } .weui-actionsheet__title .weui-actionsheet__title-text { overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2 } .weui-actionsheet__menu { color: var(--weui-FG-0); background-color: var(--weui-BG-2) } .weui-actionsheet__action { margin-top: 8px; background-color: var(--weui-BG-2); padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom) } .weui-actionsheet__cell { position: relative; padding: 16px; text-align: center; font-size: 17px; line-height: 1.41176471 } .weui-actionsheet__cell:before { content: " "; position: absolute; left: 0; top: 0; right: 0; height: 1px; border-top: 1px solid var(--weui-FG-3); color: var(--weui-FG-3); -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleY(.5); transform: scaleY(.5) } .weui-actionsheet__cell:active { background-color: var(--weui-BG-COLOR-ACTIVE) } .weui-actionsheet__cell:first-child:before { display: none } .weui-actionsheet__cell_warn { color: var(--weui-RED) } .weui-skin_android .weui-actionsheet { position: fixed; left: 50%; top: 50%; bottom: auto; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); width: 274px; box-sizing: border-box; -webkit-backface-visibility: hidden; backface-visibility: hidden; background: transparent; -webkit-transition: -webkit-transform .3s; transition: -webkit-transform .3s; transition: transform .3s; transition: transform .3s, -webkit-transform .3s; border-top-left-radius: 0; border-top-right-radius: 0 } .weui-skin_android .weui-actionsheet__action { display: none } .weui-skin_android .weui-actionsheet__menu { border-radius: 2px; box-shadow: 0 6px 30px 0 rgba(0, 0, 0, .1) } .weui-skin_android .weui-actionsheet__cell { padding: 16px; font-size: 17px; line-height: 1.41176471; color: var(--weui-FG-0); text-align: left } .weui-skin_android .weui-actionsheet__cell:first-child { border-top-left-radius: 2px; border-top-right-radius: 2px } .weui-skin_android .weui-actionsheet__cell:last-child { border-bottom-left-radius: 2px; border-bottom-right-radius: 2px } .weui-actionsheet_toggle { -webkit-transform: translate(0); transform: translate(0) } .weui-loadmore { width: 65%; margin: 1.5em auto; line-height: 1.6em; font-size: 14px; text-align: center } .weui-loadmore__tips { display: inline-block; vertical-align: middle; color: var(--weui-FG-0) } .weui-loadmore_line { border-top: 1px solid var(--weui-FG-3); margin-top: 2.4em } .weui-loadmore_line .weui-loadmore__tips { position: relative; top: -.9em; padding: 0 .55em; background-color: var(--weui-BG-2); color: var(--weui-FG-1) } .weui-loadmore_dot .weui-loadmore__tips { padding: 0 .16em } .weui-loadmore_dot .weui-loadmore__tips:before { content: " "; width: 4px; height: 4px; border-radius: 50%; background-color: var(--weui-FG-3); display: inline-block; position: relative; vertical-align: 0; top: -.16em } .weui-badge { display: inline-block; padding: .15em .4em; min-width: 8px; border-radius: 18px; background-color: var(--weui-RED); color: #fff; line-height: 1.2; text-align: center; font-size: 12px; vertical-align: middle } .weui-badge_dot { padding: .4em; min-width: 0 } .weui-toptips { display: none; position: fixed; -webkit-transform: translateZ(0); transform: translateZ(0); top: 8px; left: 8px; right: 8px; padding: 10px; border-radius: 8px; font-size: 14px; text-align: center; color: #fff; z-index: 5000; word-wrap: break-word; word-break: break-all } .weui-toptips_warn { background-color: var(--weui-RED) } .weui-search-bar { position: relative; padding: 8px; display: -webkit-box; display: -webkit-flex; display: flex; box-sizing: border-box; background-color: var(--weui-BG-0); -webkit-text-size-adjust: 100%; -webkit-box-align: center; -webkit-align-items: center; align-items: center } .weui-search-bar.weui-search-bar_focusing .weui-search-bar__cancel-btn { display: block } .weui-search-bar.weui-search-bar_focusing .weui-search-bar__label { display: none } .weui-search-bar .weui-icon-search { width: 16px; height: 16px } .weui-search-bar__form { position: relative; -webkit-box-flex: 1; -webkit-flex: auto; flex: auto; background-color: var(--weui-BG-2); border-radius: 4px } .weui-search-bar__box { position: relative; padding-left: 28px; padding-right: 32px; height: 100%; width: 100%; box-sizing: border-box; z-index: 1 } .weui-search-bar__box .weui-search-bar__input { padding: 8px 0; width: 100%; height: 1.14285714em; border: 0; font-size: 14px; line-height: 1.14285714em; box-sizing: content-box; background: transparent; caret-color: var(--weui-BRAND); color: var(--weui-FG-0) } .weui-search-bar__box .weui-search-bar__input:focus { outline: none } .weui-search-bar__box .weui-icon-search { position: absolute; top: 50%; left: 8px; margin-top: -8px } .weui-search-bar__box .weui-icon-clear { position: absolute; top: 50%; right: 0; margin-top: -16px; padding: 8px; width: 16px; height: 16px; -webkit-mask-size: 16px; mask-size: 16px } .weui-search-bar__label { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 2; font-size: 0; border-radius: 4px; display: -webkit-box; display: -webkit-flex; display: flex; -webkit-box-align: center; -webkit-align-items: center; align-items: center; -webkit-box-pack: center; -webkit-justify-content: center; justify-content: center; color: var(--weui-FG-1); background: var(--weui-BG-2) } .weui-search-bar__label span { display: inline-block; font-size: 14px; vertical-align: middle } .weui-search-bar__label .weui-icon-search { margin-right: 4px } .weui-search-bar__cancel-btn { display: none; margin-left: 8px; line-height: 28px; color: var(--weui-LINK); white-space: nowrap } .weui-search-bar__input:not(:valid)+.weui-icon-clear { display: none } input[type=search]::-webkit-search-cancel-button, input[type=search]::-webkit-search-decoration, input[type=search]::-webkit-search-results-button, input[type=search]::-webkit-search-results-decoration { display: none } .weui-picker { position: fixed; width: 100%; box-sizing: border-box; left: 0; bottom: 0; z-index: 5000; background-color: var(--weui-BG-2); padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-transform: translateY(100%); transform: translateY(100%); -webkit-transition: -webkit-transform .3s; transition: -webkit-transform .3s; transition: transform .3s; transition: transform .3s, -webkit-transform .3s } .weui-picker__hd { display: -webkit-box; display: -webkit-flex; display: flex; padding: 16px; padding: 16px calc(16px + constant(safe-area-inset-right)) 16px calc(16px + constant(safe-area-inset-left)); padding: 16px calc(16px + env(safe-area-inset-right)) 16px calc(16px + env(safe-area-inset-left)); position: relative; text-align: center; font-size: 17px; line-height: 1.4 } .weui-picker__hd:after { content: " "; position: absolute; left: 0; bottom: 0; right: 0; height: 1px; border-bottom: 1px solid var(--weui-FG-3); color: var(--weui-FG-3); -webkit-transform-origin: 0 100%; transform-origin: 0 100%; -webkit-transform: scaleY(.5); transform: scaleY(.5) } .weui-picker__bd { display: -webkit-box; display: -webkit-flex; display: flex; position: relative; background-color: var(--weui-BG-2); height: 240px; overflow: hidden } .weui-picker__group { -webkit-box-flex: 1; -webkit-flex: 1; flex: 1; position: relative; height: 100% } .weui-picker__group:first-child .weui-picker__item { padding-left: constant(safe-area-inset-left); padding-left: env(safe-area-inset-left) } .weui-picker__group:last-child .weui-picker__item { padding-right: constant(safe-area-inset-right); padding-right: env(safe-area-inset-right) } .weui-picker__mask { position: absolute; top: 0; left: 0; width: 100%; height: 100%; margin: 0 auto; z-index: 3; background-image: -webkit-linear-gradient(top, hsla(0, 0%, 100%, .95), hsla(0, 0%, 100%, .6)), -webkit-linear-gradient(bottom, hsla(0, 0%, 100%, .95), hsla(0, 0%, 100%, .6)); background-image: linear-gradient(180deg, hsla(0, 0%, 100%, .95), hsla(0, 0%, 100%, .6)), linear-gradient(0deg, hsla(0, 0%, 100%, .95), hsla(0, 0%, 100%, .6)); background-position: top, bottom; background-size: 100% 92px; background-repeat: no-repeat; -webkit-transform: translateZ(0); transform: translateZ(0) } @media(prefers-color-scheme: dark) { .weui-picker__mask { background-image: -webkit-linear-gradient(top, rgba(35, 35, 35, .95), rgba(35, 35, 35, .6)), -webkit-linear-gradient(bottom, rgba(35, 35, 35, .95), rgba(35, 35, 35, .6)); background-image: linear-gradient(180deg, rgba(35, 35, 35, .95), rgba(35, 35, 35, .6)), linear-gradient(0deg, rgba(35, 35, 35, .95), rgba(35, 35, 35, .6)) } } .weui-picker__indicator { width: 100%; height: 56px; position: absolute; left: 0; top: 92px; z-index: 3 } .weui-picker__indicator:before { top: 0; border-top: 1px solid var(--weui-FG-3); -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleY(.5); transform: scaleY(.5) } .weui-picker__indicator:after, .weui-picker__indicator:before { content: " "; position: absolute; left: 0; right: 0; height: 1px; color: var(--weui-FG-3) } .weui-picker__indicator:after { bottom: 0; border-bottom: 1px solid var(--weui-FG-3); -webkit-transform-origin: 0 100%; transform-origin: 0 100%; -webkit-transform: scaleY(.5); transform: scaleY(.5) } .weui-picker__content { position: absolute; top: 0; left: 0; width: 100% } .weui-picker__item { height: 48px; line-height: 48px; text-align: center; color: var(--weui-FG-0); text-overflow: ellipsis; white-space: nowrap; overflow: hidden } .weui-picker__item_disabled { color: var(--weui-FG-1) } @-webkit-keyframes a { 0% { -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0) } to { -webkit-transform: translateZ(0); transform: translateZ(0) } } @keyframes a { 0% { -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0) } to { -webkit-transform: translateZ(0); transform: translateZ(0) } } .weui-animate-slide-up { -webkit-animation: a ease .3s forwards; animation: a ease .3s forwards } @-webkit-keyframes b { 0% { -webkit-transform: translateZ(0); transform: translateZ(0) } to { -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0) } } @keyframes b { 0% { -webkit-transform: translateZ(0); transform: translateZ(0) } to { -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0) } } .weui-animate-slide-down { -webkit-animation: b ease .3s forwards; animation: b ease .3s forwards } @-webkit-keyframes c { 0% { opacity: 0 } to { opacity: 1 } } @keyframes c { 0% { opacity: 0 } to { opacity: 1 } } .weui-animate-fade-in { -webkit-animation: c ease .3s forwards; animation: c ease .3s forwards } @-webkit-keyframes d { 0% { opacity: 1 } to { opacity: 0 } } @keyframes d { 0% { opacity: 1 } to { opacity: 0 } } .weui-animate-fade-out { -webkit-animation: d ease .3s forwards; animation: d ease .3s forwards } .weui-agree { display: block; padding: 8px 15px 0; font-size: 14px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0) } .weui-agree a, .weui-agree navigator { color: var(--weui-LINK) } .weui-agree navigator { display: inline } .weui-agree__text { color: var(--weui-FG-1); margin-left: 2px } .weui-agree__checkbox { -webkit-appearance: none; appearance: none; display: inline-block; border: 0; outline: 0; vertical-align: middle; background-color: currentColor; -webkit-mask-position: 0 0; mask-position: 0 0; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-size: 100%; mask-size: 100%; -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%221000%22%20height%3D%221000%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M500%20916.667C269.881%20916.667%2083.333%20730.119%2083.333%20500%2083.333%20269.881%20269.881%2083.333%20500%2083.333c230.119%200%20416.667%20186.548%20416.667%20416.667%200%20230.119-186.548%20416.667-416.667%20416.667zm0-50c202.504%200%20366.667-164.163%20366.667-366.667%200-202.504-164.163-366.667-366.667-366.667-202.504%200-366.667%20164.163-366.667%20366.667%200%20202.504%20164.163%20366.667%20366.667%20366.667z%22%20fill-rule%3D%22evenodd%22%20fill-opacity%3D%22.9%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%221000%22%20height%3D%221000%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M500%20916.667C269.881%20916.667%2083.333%20730.119%2083.333%20500%2083.333%20269.881%20269.881%2083.333%20500%2083.333c230.119%200%20416.667%20186.548%20416.667%20416.667%200%20230.119-186.548%20416.667-416.667%20416.667zm0-50c202.504%200%20366.667-164.163%20366.667-366.667%200-202.504-164.163-366.667-366.667-366.667-202.504%200-366.667%20164.163-366.667%20366.667%200%20202.504%20164.163%20366.667%20366.667%20366.667z%22%20fill-rule%3D%22evenodd%22%20fill-opacity%3D%22.9%22%2F%3E%3C%2Fsvg%3E); color: var(--weui-FG-2); width: 1em; height: 1em; font-size: 17px; margin-top: -.2em } .weui-agree__checkbox-check { position: absolute; left: -9999px } .weui-agree__checkbox-check[aria-checked=true]+.weui-agree__checkbox, .weui-agree__checkbox:checked { -webkit-mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-1.177-7.86l-2.765-2.767L7%2012.431l3.119%203.121a1%201%200%20001.414%200l5.952-5.95-1.062-1.062-5.6%205.6z%22%2F%3E%3C%2Fsvg%3E); mask-image: url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-1.177-7.86l-2.765-2.767L7%2012.431l3.119%203.121a1%201%200%20001.414%200l5.952-5.95-1.062-1.062-5.6%205.6z%22%2F%3E%3C%2Fsvg%3E); color: var(--weui-BRAND) } .weui-agree_animate { -webkit-animation: e .3s 1; animation: e .3s 1 } @-webkit-keyframes e { 0% { -webkit-transform: translateX(0); transform: translateX(0) } 16% { -webkit-transform: translateX(-8px); transform: translateX(-8px) } 28% { -webkit-transform: translateX(-16px); transform: translateX(-16px) } 44% { -webkit-transform: translateX(0); transform: translateX(0) } 59% { -webkit-transform: translateX(-16px); transform: translateX(-16px) } 73% { -webkit-transform: translateX(0); transform: translateX(0) } 82% { -webkit-transform: translateX(16px); transform: translateX(16px) } 94% { -webkit-transform: translateX(8px); transform: translateX(8px) } to { -webkit-transform: translateX(0); transform: translateX(0) } } @keyframes e { 0% { -webkit-transform: translateX(0); transform: translateX(0) } 16% { -webkit-transform: translateX(-8px); transform: translateX(-8px) } 28% { -webkit-transform: translateX(-16px); transform: translateX(-16px) } 44% { -webkit-transform: translateX(0); transform: translateX(0) } 59% { -webkit-transform: translateX(-16px); transform: translateX(-16px) } 73% { -webkit-transform: translateX(0); transform: translateX(0) } 82% { -webkit-transform: translateX(16px); transform: translateX(16px) } 94% { -webkit-transform: translateX(8px); transform: translateX(8px) } to { -webkit-transform: translateX(0); transform: translateX(0) } } .weui-loading { width: 20px; height: 20px; display: inline-block; vertical-align: middle; -webkit-animation: f 1s steps(12) infinite; animation: f 1s steps(12) infinite; background: transparent url("data:image/svg+xml;charset=utf8, %3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 100 100'%3E%3Cpath fill='none' d='M0 0h100v100H0z'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23E9E9E9' rx='5' ry='5' transform='translate(0 -30)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23989697' rx='5' ry='5' transform='rotate(30 105.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%239B999A' rx='5' ry='5' transform='rotate(60 75.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23A3A1A2' rx='5' ry='5' transform='rotate(90 65 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23ABA9AA' rx='5' ry='5' transform='rotate(120 58.66 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23B2B2B2' rx='5' ry='5' transform='rotate(150 54.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23BAB8B9' rx='5' ry='5' transform='rotate(180 50 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23C2C0C1' rx='5' ry='5' transform='rotate(-150 45.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23CBCBCB' rx='5' ry='5' transform='rotate(-120 41.34 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23D2D2D2' rx='5' ry='5' transform='rotate(-90 35 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23DADADA' rx='5' ry='5' transform='rotate(-60 24.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23E2E2E2' rx='5' ry='5' transform='rotate(-30 -5.98 65)'/%3E%3C/svg%3E") no-repeat; background-size: 100% } .weui-btn_loading.weui-btn_primary .weui-loading, .weui-loading.weui-loading_transparent { background-image: url("data:image/svg+xml;charset=utf8, %3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 100 100'%3E%3Cpath fill='none' d='M0 0h100v100H0z'/%3E%3Crect xmlns='http://www.w3.org/2000/svg' width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.56)' rx='5' ry='5' transform='translate(0 -30)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.5)' rx='5' ry='5' transform='rotate(30 105.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.43)' rx='5' ry='5' transform='rotate(60 75.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.38)' rx='5' ry='5' transform='rotate(90 65 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.32)' rx='5' ry='5' transform='rotate(120 58.66 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.28)' rx='5' ry='5' transform='rotate(150 54.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.25)' rx='5' ry='5' transform='rotate(180 50 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.2)' rx='5' ry='5' transform='rotate(-150 45.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.17)' rx='5' ry='5' transform='rotate(-120 41.34 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.14)' rx='5' ry='5' transform='rotate(-90 35 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.1)' rx='5' ry='5' transform='rotate(-60 24.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.03)' rx='5' ry='5' transform='rotate(-30 -5.98 65)'/%3E%3C/svg%3E") } @-webkit-keyframes f { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg) } to { -webkit-transform: rotate(1turn); transform: rotate(1turn) } } @keyframes f { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg) } to { -webkit-transform: rotate(1turn); transform: rotate(1turn) } } .weui-slider { padding: 15px 18px; -webkit-user-select: none; user-select: none } .weui-slider__inner { position: relative; height: 2px; background-color: var(--weui-FG-3) } .weui-slider__track { height: 2px; background-color: var(--weui-BRAND); width: 0 } .weui-slider__handler { position: absolute; left: 0; top: 50%; width: 28px; height: 28px; margin-left: -14px; margin-top: -14px; border-radius: 50%; background-color: #fff; box-shadow: 0 0 4px var(--weui-FG-3) } .weui-slider-box { display: -webkit-box; display: -webkit-flex; display: flex; -webkit-box-align: center; -webkit-align-items: center; align-items: center } .weui-slider-box .weui-slider { -webkit-box-flex: 1; -webkit-flex: 1; flex: 1 } .weui-slider-box__value { margin-left: .5em; min-width: 24px; color: var(--weui-FG-1); text-align: center; font-size: 14px } .wx_dot_loading, .wx_dot_loading:after, .wx_dot_loading:before { display: inline-block; vertical-align: middle; width: 6px; height: 6px; border-radius: 50%; background-color: rgba(0, 0, 0, .3); font-size: 0; -webkit-animation: h 1.6s step-start infinite; animation: h 1.6s step-start infinite } .wx_dot_loading { position: relative } .wx_dot_loading:before { content: ""; position: absolute; left: -12px; background-color: rgba(0, 0, 0, .1); -webkit-animation: g 1.6s step-start infinite; animation: g 1.6s step-start infinite } .wx_dot_loading:after { content: ""; position: absolute; right: -12px; background-color: rgba(0, 0, 0, .5); -webkit-animation: i 1.6s step-start infinite; animation: i 1.6s step-start infinite } @-webkit-keyframes g { 0%, to { background-color: rgba(0, 0, 0, .1) } 30% { background-color: rgba(0, 0, 0, .5) } 60% { background-color: rgba(0, 0, 0, .3) } } @keyframes g { 0%, to { background-color: rgba(0, 0, 0, .1) } 30% { background-color: rgba(0, 0, 0, .5) } 60% { background-color: rgba(0, 0, 0, .3) } } @-webkit-keyframes h { 0%, to { background-color: rgba(0, 0, 0, .3) } 30% { background-color: rgba(0, 0, 0, .1) } 60% { background-color: rgba(0, 0, 0, .5) } } @keyframes h { 0%, to { background-color: rgba(0, 0, 0, .3) } 30% { background-color: rgba(0, 0, 0, .1) } 60% { background-color: rgba(0, 0, 0, .5) } } @-webkit-keyframes i { 0%, to { background-color: rgba(0, 0, 0, .5) } 30% { background-color: rgba(0, 0, 0, .3) } 60% { background-color: rgba(0, 0, 0, .1) } } @keyframes i { 0%, to { background-color: rgba(0, 0, 0, .5) } 30% { background-color: rgba(0, 0, 0, .3) } 60% { background-color: rgba(0, 0, 0, .1) } } .wx_dot_loading_white { background-color: hsla(0, 0%, 100%, .3); -webkit-animation: k 1.6s step-start infinite; animation: k 1.6s step-start infinite } .wx_dot_loading_white:before { background-color: hsla(0, 0%, 100%, .5); -webkit-animation: j 1.6s step-start infinite; animation: j 1.6s step-start infinite } .wx_dot_loading_white:after { background-color: hsla(0, 0%, 100%, .1); -webkit-animation: l 1.6s step-start infinite; animation: l 1.6s step-start infinite } @-webkit-keyframes j { 0%, to { background-color: hsla(0, 0%, 100%, .5) } 30% { background-color: hsla(0, 0%, 100%, .1) } 60% { background-color: hsla(0, 0%, 100%, .3) } } @keyframes j { 0%, to { background-color: hsla(0, 0%, 100%, .5) } 30% { background-color: hsla(0, 0%, 100%, .1) } 60% { background-color: hsla(0, 0%, 100%, .3) } } @-webkit-keyframes k { 0%, to { background-color: hsla(0, 0%, 100%, .3) } 30% { background-color: hsla(0, 0%, 100%, .5) } 60% { background-color: hsla(0, 0%, 100%, .1) } } @keyframes k { 0%, to { background-color: hsla(0, 0%, 100%, .3) } 30% { background-color: hsla(0, 0%, 100%, .5) } 60% { background-color: hsla(0, 0%, 100%, .1) } } @-webkit-keyframes l { 0%, to { background-color: hsla(0, 0%, 100%, .1) } 30% { background-color: hsla(0, 0%, 100%, .3) } 60% { background-color: hsla(0, 0%, 100%, .5) } } @keyframes l { 0%, to { background-color: hsla(0, 0%, 100%, .1) } 30% { background-color: hsla(0, 0%, 100%, .3) } 60% { background-color: hsla(0, 0%, 100%, .5) } } :host { width: 100% } .weui-slideview { position: relative; overflow: hidden } .weui-slideview__left { position: relative; z-index: 10 } .weui-slideview__right { position: absolute; z-index: 1; left: 100%; top: 0; height: 100% } .weui-slideview__btn__wrp { position: absolute; left: 0; bottom: 0; text-align: center; min-width: 69px; height: 100%; white-space: nowrap } .weui-slideview__btn { color: #fff; padding: 0 17px } .weui-slideview__btn-group_default .weui-slideview__btn { background: #c7c7cc } @media(prefers-color-scheme: dark) { .weui-slideview__btn-group_default .weui-slideview__btn { background: var(--weui-BG-4) } } .weui-slideview__btn-group_default~.weui-slideview__btn-group_default:before { content: " "; position: absolute; left: 0; top: 0; width: 1px; bottom: 0; border-left: 1px solid #fff; color: #fff; -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleX(.5); transform: scaleX(.5) } @media(prefers-color-scheme: dark) { .weui-slideview__btn-group_default~.weui-slideview__btn-group_default:before { border-left-color: var(--weui-FG-3) } } .weui-slideview__btn-group_default:first-child:before { display: none } .weui-slideview__btn-group_warn .weui-slideview__btn { background: #fe3b30 } .weui-slideview__btn-group_warn~.weui-slideview__btn-group_warn:before { content: " "; position: absolute; left: 0; top: 0; width: 1px; bottom: 0; border-left: 1px solid #fff; color: #fff; -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleX(.5); transform: scaleX(.5) } .weui-slideview__btn-group_warn:first-child:before { display: none } .weui-slideview_icon .weui-slideview__btn__wrp { background: transparent; font-size: 0 } .weui-slideview_icon .weui-slideview__btn__wrp:first-child { padding-left: 16px } .weui-slideview_icon .weui-slideview__btn__wrp:last-child { padding-right: 8px } .weui-slideview_icon .weui-slideview__btn { width: 48px; height: 48px; line-height: 48px; padding: 0; display: inline-block; vertical-align: middle; border-radius: 50%; background-color: #fff } @media(prefers-color-scheme: dark) { .weui-slideview_icon .weui-slideview__btn { background-color: var(--weui-BG-4) } } .weui-slideview_icon .weui-slideview__btn__icon { display: inline-block; vertical-align: middle; width: 22px; height: 22px } page, :root { --height: 44px; --right: 95px } .weui-navigation-bar { overflow: hidden; color: var(--weui-FG-0) } .weui-navigation-bar .android { --height: 48px; --right: 221px } .weui-navigation-bar__inner { position: fixed; top: 0; left: 0; z-index: 5001; height: var(--height); padding-right: var(--right); width: calc(100% - var(--right)) } .weui-navigation-bar__inner, .weui-navigation-bar__inner .weui-navigation-bar__left { display: -webkit-box; display: -webkit-flex; display: flex; -webkit-box-align: center; -webkit-align-items: center; align-items: center; flex-direction: row; } .weui-navigation-bar__inner .weui-navigation-bar__left { position: relative; width: var(--right); padding-left: 16px } .weui-navigation-bar__inner .weui-navigation-bar__left .weui-navigation-bar__btn { display: inline-block; vertical-align: middle; background-repeat: no-repeat } .weui-navigation-bar__inner .weui-navigation-bar__left .weui-navigation-bar__btn_goback { font-size: 12px; width: 1em; height: 2em; -webkit-mask: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='24' viewBox='0 0 12 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M10 19.438L8.955 20.5l-7.666-7.79a1.02 1.02 0 0 1 0-1.42L8.955 3.5 10 4.563 2.682 12 10 19.438z'/%3E%3C/svg%3E") no-repeat 50% 50%; mask: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='24' viewBox='0 0 12 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M10 19.438L8.955 20.5l-7.666-7.79a1.02 1.02 0 0 1 0-1.42L8.955 3.5 10 4.563 2.682 12 10 19.438z'/%3E%3C/svg%3E") no-repeat 50% 50%; -webkit-mask-size: cover; mask-size: cover; background-color: currentColor } .weui-navigation-bar__inner .weui-navigation-bar__left .weui-navigation-bar__btn_goback:active { opacity: .5 } .weui-navigation-bar__inner .weui-navigation-bar__center { font-size: 17px; text-align: center; position: relative; -webkit-box-flex: 1; -webkit-flex: 1; flex: 1; display: -webkit-box; display: -webkit-flex; display: flex; -webkit-box-align: center; -webkit-align-items: center; align-items: center; -webkit-box-pack: center; -webkit-justify-content: center; justify-content: center } .weui-navigation-bar__inner .weui-navigation-bar__loading { margin-right: 4px; font-size: 0 } .weui-navigation-bar__inner .weui-navigation-bar__loading .weui-loading { margin-left: 0 } .weui-navigation-bar__inner .weui-navigation-bar__right { margin-right: 16px } .weui-navigation-bar__placeholder { height: var(--height); background: var(--weui-BG-1); position: relative; z-index: 50 } .weui-uploader__hd { display: block } .weui-uploader__overview { display: -webkit-box; display: -webkit-flex; display: flex; -webkit-box-align: center; -webkit-align-items: center; align-items: center } .weui-uploader__tips { color: var(--weui-FG-2); font-size: 14px; line-height: 1.4; padding-top: 4px } .weui-uploader__img { display: block; width: 100%; height: 100% } .weui-gallery { display: -webkit-box; display: -webkit-flex; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; flex-direction: column; -webkit-flex-wrap: nowrap; flex-wrap: nowrap } .weui-gallery__info { color: #fff; font-size: 17px; line-height: 60px; min-height: 60px; text-align: center } .weui-gallery__img__wrp { -webkit-box-flex: 1; -webkit-flex: 1; flex: 1; position: relative; font-size: 0 } .weui-gallery__img { position: absolute; width: 100%; height: 100% } .weui-gallery__opr { position: static } .weui-search-bar .weui-search-bar__box .weui-search-bar__input { height: inherit; line-height: inherit } .weui-search-bar .weui-search-bar__box .weui-icon-clear { display: block } .weui-loadmore .weui-loading { margin-right: .3em } .weui-btn_input-clear { display: block } ================================================ FILE: miniprogram/common/reset.wxss ================================================ page, view, text, image, button, video, map, scroll-view, swiper, input, textarea, navigator { position: relative; display: flex; flex-direction: column; justify-content: flex-start; align-content: flex-start; align-items: stretch; box-sizing: border-box; background-origin: border-box; } page { height: 100vh; flex-direction: column; justify-content: space-between; align-items: center; } navigator text, text text, text navigator { display: inline; } image { align-self: flex-start; } .wx-scroll-view-flex :is(div):not(.wx-scroll-view-flex) { width: auto!important; } .page-scroll-view { flex: 1; overflow: auto; } ================================================ FILE: miniprogram/component/navigation-bar/navigation-bar.js ================================================ const app = getApp().globalData Component({ options: { styleIsolation: 'apply-shared', // 表示页面 wxss 样式将影响到自定义组件,但自定义组件 wxss 中指定的样式不会影响页面 multipleSlots: true // 在组件定义时的选项中启用多slot支持 }, /** * 组件的属性列表 */ properties: { extClass: { type: String, value: '' }, title: { type: String, value: '' }, background: { type: String, value: '' }, color: { type: String, value: '' }, back: { type: Boolean, value: true }, loading: { type: Boolean, value: false }, animated: { // 显示隐藏的时候opacity动画效果 type: Boolean, value: true }, show: { // 显示隐藏导航,隐藏的时候navigation-bar的高度占位还在 type: Boolean, value: true, observer: '_showChange' }, // back为true的时候,返回的页面深度 delta: { type: Number, value: 1 } }, /** * 组件的初始数据 */ data: { displayStyle: '' }, attached() { const isSupport = !!wx.getMenuButtonBoundingClientRect const rect = wx.getMenuButtonBoundingClientRect ? wx.getMenuButtonBoundingClientRect() : null this.setData({ ios: !!(app.system.toLowerCase().search('ios') + 1), theme: app.theme || 'light', statusBarHeight: app.statusBarHeight, navBarHeight: rect.bottom - rect.top + 10 + app.statusBarHeight, innerWidth: isSupport ? `width:${rect.left}px` : '', innerPaddingRight: isSupport ? `padding-right:${app.windowWidth - rect.left}px` : '', leftWidth: isSupport ? `width:${app.windowWidth - rect.left}px` : '', }) if (wx.onThemeChange) { wx.onThemeChange(({ theme }) => { this.setData({ theme }) }) } }, detached() { if (wx.offThemeChange) { wx.offThemeChange() } }, /** * 组件的方法列表 */ methods: { _showChange(show) { const animated = this.data.animated let displayStyle = '' if (animated) { displayStyle = `opacity: ${show ? '1' : '0' };-webkit-transition:opacity 0.5s;transition:opacity 0.5s;` } else { displayStyle = `display: ${show ? '' : 'none'}` } this.setData({ displayStyle }) }, back() { const data = this.data if (data.delta) { wx.navigateBack({ delta: data.delta }) } // 如果是直接打开的,就默认回首页 if (getCurrentPages().length == 1) { wx.switchTab({ url: '/page/component/index', complete: (res) => { console.log(res) } }) } this.triggerEvent('back', { delta: data.delta }, {}) } } }) ================================================ FILE: miniprogram/component/navigation-bar/navigation-bar.json ================================================ { "component": true, "usingComponents": {}, "componentFramework": "glass-easel", "renderer": "skyline" } ================================================ FILE: miniprogram/component/navigation-bar/navigation-bar.wxml ================================================ {{title}} ================================================ FILE: miniprogram/component/navigation-bar/navigation-bar.wxss ================================================ .weui-navigation-bar { display: flex; overflow: hidden; color: rgba(0, 0, 0, .9); width: 100vw; } .weui-navigation-bar__placeholder { background: #f7f7f7; position: relative; } .weui-navigation-bar__inner, .weui-navigation-bar__inner .weui-navigation-bar__left { display: flex; align-items: center; flex-direction: row; } .weui-navigation-bar__inner { position: relative; padding-right: 95px; width: 100vw; } .weui-navigation-bar__inner .weui-navigation-bar__left { position: relative; width: 95px; padding-left: 16px; } .weui-navigation-bar__btn_goback_wrapper { padding: 11px 18px 11px 16px; margin: -11px -18px -11px -16px; } .weui-navigation-bar__inner .weui-navigation-bar__left .weui-navigation-bar__btn_goback { font-size: 12px; width: 12px; height: 24px; background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='24' viewBox='0 0 12 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M10 19.438L8.955 20.5l-7.666-7.79a1.02 1.02 0 0 1 0-1.42L8.955 3.5 10 4.563 2.682 12 10 19.438z'/%3E%3C/svg%3E") no-repeat 50% 50%; background-color: currentColor; background-size: cover; } .weui-navigation-bar__inner .weui-navigation-bar__center { font-size: 17px; text-align: center; position: relative; flex: 1; display: flex; align-items: center; justify-content: center; font-weight: bold; white-space: nowrap; } [data-weui-theme=dark].weui-navigation-bar { color: hsla(0, 0%, 100%, .8); } [data-weui-theme=dark] .weui-navigation-bar__inner { background-color: #1f1f1f; } ================================================ FILE: miniprogram/components/app-bar-course/index.json ================================================ { "component": true, "usingComponents": {} } ================================================ FILE: miniprogram/components/app-bar-course/index.less ================================================ .expand-container { position: absolute; top: 0; right: 0; bottom: 0; left: 0; padding: 0 24px; padding-bottom: env(safe-area-inset-bottom); pointer-events: auto; overflow: hidden; background-color: #e9f8f7; color: #7e8081; } .hide { display: none; } .nav-bar { overflow: hidden; box-sizing: border-box; } .icon--back { width: 30px; height: 30px; } .title { margin-left: 10px; min-width: 160px; flex: 1; } .title .name { margin-top: 4px; font-size: 12px; } .title-wrap { flex: 1; min-width: 240px; } .footer { padding: 0 24px; } .footer .icon { width: 40px; height: 40px; } .expand-cover { width: 100%; height: 100%; } .music-title { margin-top: 48px; font-size: 20px; font-weight: bold; color: #07c160; } .music-title .name { margin-top: 12px; font-size: 14px; font-weight: 200; color: #b1b2b3; } .cover-area { margin: 8px 0; width: 100%; aspect-ratio: 1 / 1; overflow: hidden; } .cover { /* aspect-ratio: 1 / 1; */ flex-shrink: 0; } .icon { width: 18px; height: 18px; } .row { display: flex; flex-direction: row; align-items: center; } .row-between { display: flex; flex-direction: row; justify-content: space-between; align-items: center; } .column { display: flex; flex-direction: column; } .column-main-center { display: flex; flex-direction: column; justify-content: center; } .column-cross-center { display: flex; flex-direction: column; align-items: center; } .center { display: flex; align-items: center; justify-content: center; } .circle { width: 100%; height: 100%; overflow: hidden; border-radius: 50%; } ================================================ FILE: miniprogram/components/app-bar-course/index.ts ================================================ // components/app-bar/index.js const { shared, timing, Easing } = wx.worklet export const GestureState = { POSSIBLE: 0, BEGIN: 1, ACTIVE: 2, END: 3, CANCELLED: 4, } export const lerp = function (begin, end, t) { 'worklet' return begin + (end - begin) * t } export const clamp = function (cur, lowerBound, upperBound) { 'worklet' if (cur > upperBound) return upperBound if (cur < lowerBound) return lowerBound return cur } const systemInfo = wx.getSystemInfoSync() const { statusBarHeight, screenHeight, screenWidth, safeArea } = systemInfo console.info('@@@ systemInfo', systemInfo) Component({ properties: { }, data: { showAppbar: false, maxCoverSize: 0, statusBarHeight: 0, musicCover: 'https://res.wx.qq.com/op_res/Nu9XXzXcXnD1j5EgWQ2ElxNcl1yMvnKypRo4MTbjOv7FC3saigGoOBTZibyESC7EXaClnPYhB6pvfb-IRmso6g' }, lifetimes: { attached() { const progress = shared(0) const initCoverSize = 60 // 初始图片大小 const pagePadding = 24 const maxCoverSize = screenWidth - 2 * pagePadding const safeAreaInsetBottom = screenHeight - safeArea.bottom const isIOS = systemInfo.system.indexOf('iOS') >= 0 this.setData({ statusBarHeight, maxCoverSize }) console.log('attached: ', statusBarHeight, maxCoverSize) this.applyAnimatedStyle('.cover', () => { 'worklet' const height = initCoverSize + (maxCoverSize - initCoverSize) * progress.value console.log('height: ', maxCoverSize, initCoverSize, progress.value) return { width: `${height}px`, height:`${height}px`, } }) this.applyAnimatedStyle('.expand-container', () => { 'worklet' console.log('expand-container: ', maxCoverSize, initCoverSize, progress.value) const t = progress.value const maxRadius = 30 const radius = isIOS ? maxRadius * t : 0 const initBarHeight = initCoverSize + 8 * 2 + safeAreaInsetBottom return { top: `${(screenHeight - initBarHeight) * (1 - t)}px`, borderRadius: `${radius}px ${radius}px 0px 0px` } }) this.applyAnimatedStyle('.title-wrap', () => { 'worklet' console.log('title-wrap: ', maxCoverSize, initCoverSize, progress.value) return { opacity: 1 - progress.value } }) const navBarHeight = statusBarHeight + (isIOS ? 40 : 44) this.applyAnimatedStyle('.nav-bar', () => { 'worklet' console.log('nav-bar: ', maxCoverSize, initCoverSize, progress.value) const t = progress.value const threshold = 0.8 const opacity = t < threshold ? 0 : (t - threshold) / (1 - threshold) return { opacity, height: `${navBarHeight * progress.value}px` } }) this.progress = progress } }, methods: { close() { this.progress.value = timing(0, { duration: 250, easing: Easing.ease }) }, expand() { this.progress.value = timing(1, { duration: 250, easing: Easing.ease }) }, handleDragUpdate(delta) { 'worklet' const curValue = this.progress.value const newVal = curValue - delta this.progress.value = clamp(newVal, 0.0, 1.0) }, handleDragEnd(velocity) { 'worklet' const t = this.progress.value let animateForward = false if (Math.abs(velocity) >= 1) { animateForward = velocity <= 0 } else { animateForward = t > 0.7 } const animationCurve = Easing.out(Easing.ease) if (animateForward) { this.progress.value = timing( 1.0, { duration: 200, easing: animationCurve, }) } else { this.progress.value = timing( 0.0, { duration: 250, easing: animationCurve, }) } }, handleVerticalDrag(evt) { 'worklet' if (evt.state === GestureState.ACTIVE) { const delta = evt.deltaY / screenHeight this.handleDragUpdate(delta) } else if (evt.state === GestureState.END) { const velocity = evt.velocityY / screenHeight this.handleDragEnd(velocity) } else if (evt.state === GestureState.CANCELLED) { this.handleDragEnd(0.0) } }, }, }) ================================================ FILE: miniprogram/components/app-bar-course/index.wxml ================================================ Skyline 渲染框架入门与实践 小程序技术专员 - binnie 微信学堂 88 人在学 Skyline 渲染框架入门与实践 小程序技术专员 - binnie ================================================ FILE: miniprogram/components/grid-tile/index.js ================================================ // components/grid-tile/index.js Component({ /** * 组件的属性列表 */ properties: { height: { type: Number, value: 0, }, index: { type: Number, value: 0, }, }, /** * 组件的初始数据 */ data: { }, /** * 组件的方法列表 */ methods: { } }) ================================================ FILE: miniprogram/components/grid-tile/index.json ================================================ { "component": true, "usingComponents": {} } ================================================ FILE: miniprogram/components/grid-tile/index.wxml ================================================ {{index}} ================================================ FILE: miniprogram/components/grid-tile/index.wxss ================================================ /* components/grid-tile/index.wxss */ :host { display: block; } .center { text-align: center; align-items: center; justify-content: center; } ================================================ FILE: miniprogram/components/navigation-bar/index.js ================================================ const app = getApp().globalData Component({ options: { multipleSlots: true, // 在组件定义时的选项中启用多slot支持 }, /** * 组件的属性列表 */ properties: { title: { type: String, value: '', }, background: { type: String, value: '', }, color: { type: String, value: '', }, back: { type: Boolean, value: true, }, loading: { type: Boolean, value: false, }, // back为true的时候,返回的页面深度 delta: { type: Number, value: 1, }, sideWidth: { type: Number, value: 0, }, }, attached() { const isSupport = !!wx.getMenuButtonBoundingClientRect const rect = wx.getMenuButtonBoundingClientRect ? wx.getMenuButtonBoundingClientRect() : null const sideWidth = isSupport ? app.windowWidth - rect.left : 0 this.setData({ ios: !!(app.system.toLowerCase().search('ios') + 1), sideWidth: this.data.sideWidth || sideWidth, statusBarHeight: app.statusBarHeight, }) }, /** * 组件的方法列表 */ methods: { back() { const { data } = this if (data.delta) { wx.navigateBack({ delta: data.delta, }) } this.triggerEvent('back', { delta: data.delta }, {}) }, }, }) ================================================ FILE: miniprogram/components/navigation-bar/index.json ================================================ { "component": true, "usingComponents": {} } ================================================ FILE: miniprogram/components/navigation-bar/index.wxml ================================================ {{title}} ================================================ FILE: miniprogram/components/navigation-bar/index.wxss ================================================ .navigation-bar { background-color: #f7f7f7; } .navigation-bar .android { height: 48px; } .navigation-bar__inner { height: 44px; display: flex; flex-direction: row; align-items: center; } .navigation-bar__inner .navigation-bar__left { position: relative; padding-left: 16px; height: 100%; display: flex; flex-direction: row; align-items: center; } .navigation-bar__inner .navigation-bar__left .navigation-bar__buttons { height: 100%; flex-direction: row; align-items: center; min-width: 50px; } .navigation-bar__inner .navigation-bar__left .navigation-bar__btn { display: inline-block; vertical-align: middle; background-repeat: no-repeat; height: 100%; flex-direction: row; align-items: center; } .navigation-bar__inner .navigation-bar__left .navigation-bar__btn_goback { width: 8px; height: 14px; } .navigation-bar__inner .navigation-bar__center { font-size: 17px; text-align: center; position: relative; flex: 1; display: flex; align-items: center; justify-content: center; } .navigation-bar__inner .navigation-bar__center.title { display: inline-block; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } .navigation-bar__inner .navigation-bar__loading { margin-right: 4px; display: inline-flex; align-items: center; } .navigation-bar__inner .navigation-bar__loading .loading { margin-left: 0; } .navigation-bar__inner .navigation-bar__right { padding-right: 16px; } ================================================ FILE: miniprogram/components/page-scroll/index.js ================================================ const globalThis = this; const self = this module.exports = require('../../_commons/0.js')([ { ids: [6], modules: { /***/ './node_modules/@mpflow/webpack-plugin/lib/loaders/page-loader.js?appContext=src&outputPath=components%2Fpage-scroll%2Findex!./src/components/page-scroll/index.ts': /*! *************************************************************************************************************************************************************************!*\ !*** ./node_modules/@mpflow/webpack-plugin/lib/loaders/page-loader.js?appContext=src&outputPath=components%2Fpage-scroll%2Findex!./src/components/page-scroll/index.ts ***! \************************************************************************************************************************************************************************ */ /*! no static exports found */ /***/ (function (module, exports, __webpack_require__) { module.exports = __webpack_require__(/*! ./index.ts */ './src/components/page-scroll/index.ts') /***/ }), /***/ './src/components/page-scroll/index.ts': /*! *********************************************!*\ !*** ./src/components/page-scroll/index.ts ***! \******************************************** */ /*! no static exports found */ /***/ (function (module, exports) { Component({ options: { virtualHost: true }, properties: { refresherEnabled: { type: Boolean, value: false }, refresherThreshold: { type: Number, value: 45 }, refresherDefaultStyle: { type: String, value: 'black' }, refresherBackground: { type: String, value: '#FFF' }, refresherTriggered: { type: Boolean, value: false }, lowerThreshold: { type: Number, value: 50 }, scrollIntoView: { type: String, value: '' } }, methods: { onScroll: function onScroll(e) { this.triggerEvent('scroll', e.detail) }, onScrollToLower: function onScrollToLower(e) { this.triggerEvent('scrollToLower', e.detail) }, onPulling: function onPulling(e) { this.triggerEvent('pulling', e.detail) }, onRefresh: function onRefresh(e) { this.triggerEvent('refresh', e.detail) }, onRestore: function onRestore(e) { this.triggerEvent('restore', e.detail) }, onAbort: function onAbort(e) { this.triggerEvent('abort', e.detail) } } }) /***/ }) }, entries: [['./node_modules/@mpflow/webpack-plugin/lib/loaders/page-loader.js?appContext=src&outputPath=components%2Fpage-scroll%2Findex!./src/components/page-scroll/index.ts', 0]] }, ]) // # sourceMappingURL=index.js.map ================================================ FILE: miniprogram/components/page-scroll/index.json ================================================ { "component": true, "usingComponents": {}, "componentFramework": "glass-easel", "renderer": "skyline" } ================================================ FILE: miniprogram/components/page-scroll/index.wxml ================================================ ================================================ FILE: miniprogram/components/page-scroll/index.wxss ================================================ /* # sourceMappingURL=index.wxss.map */ ================================================ FILE: miniprogram/components/popup/index.js ================================================ Component({ properties: { maskClosable: { type: Boolean, value: true, }, mask: { // 是否需要 遮罩层 type: Boolean, value: true, }, maskStyle: { // 遮罩层的样式 type: String, value: '', }, show: { // 是否开启弹窗 type: Boolean, value: false, }, }, data: { enable: true, }, methods: { close() { const { data } = this console.log('@@@ close', data.maskClosable) if (!data.maskClosable) return this.setData({ enable: !this.data.enable }) this.triggerEvent('close', {}, {}) }, // stopEvent() {}, }, }) ================================================ FILE: miniprogram/components/popup/index.json ================================================ { "component": true, "usingComponents": {} } ================================================ FILE: miniprogram/components/popup/index.wxml ================================================ ================================================ FILE: miniprogram/components/popup/index.wxss ================================================ root-portal { display: flex; width: 100%; height: 100%; } .popup { position: absolute; bottom: 0; top: 0; z-index: 5000; display: flex; flex-direction: row; justify-content: center; align-items: center; width: 100vw; /* height: 200px; */ background: rgba(51, 51, 51, 0.65); opacity: 1; transform: scale3d(1, 1, 1); transition: all .2s ease-in; pointer-events: auto; } ================================================ FILE: miniprogram/config.js ================================================ /** * 小程序配置文件 */ const host = '14592619.qcloud.la' const config = { // 测试的请求地址,用于测试会话 requestUrl: 'https://mp.weixin.qq.com', host, // 云开发环境 ID envId: 'release-b86096', // envId: 'test-f0b102', // 云开发-存储 示例文件的文件 ID demoImageFileId: 'cloud://release-b86096.7265-release-b86096-1258211818/demo.jpg', demoVideoFileId: 'cloud://release-b86096.7265-release-b86096/demo.mp4', } module.exports = config ================================================ FILE: miniprogram/demo.theme.json ================================================ { "light": { "navigationBarTextStyle": "black", "navigationBarBackgroundColor": "#F7F7F7", "backgroundColor": "#F7F7F7", "tabBarColor": "#7A7E83", "tabBarSelectedColor": "#3cc51f", "tabBarBorderStyle": "black", "tabBarBackgroundColor": "#F7F7F7", "iconPathComponent": "image/icon_component.png", "selectedIconPathComponent": "image/icon_component_HL.png", "iconPathAPI": "image/icon_API.png", "selectedIconPathAPI": "image/icon_API_HL.png", "iconPathCloud": "image/icon_cloud.png", "selectedIconPathCloud": "image/icon_cloud_HL.png", "iconPathAd": "image/icon_ad.png", "selectedIconPathAd": "image/icon_ad_HL.png", "backgroundTextStyle": "dark" }, "dark": { "navigationBarTextStyle": "white", "navigationBarBackgroundColor": "#1F1F1F", "backgroundColor": "#1F1F1F", "tabBarColor": "#FFFFFF", "tabBarSelectedColor": "#51A937", "tabBarBorderStyle": "white", "tabBarBackgroundColor": "#1F1F1F", "iconPathComponent": "image/icon_component_dark.png", "selectedIconPathComponent": "image/icon_component_HL.png", "iconPathAPI": "image/icon_API_dark.png", "selectedIconPathAPI": "image/icon_API_HL.png", "iconPathCloud": "image/icon_cloud_dark.png", "selectedIconPathCloud": "image/icon_cloud_HL.png", "iconPathAd": "image/icon_ad_dark.png", "selectedIconPathAd": "image/icon_ad_HL.png", "backgroundTextStyle": "light" } } ================================================ FILE: miniprogram/package.json ================================================ { "name": "miniprogram", "version": "1.0.0", "description": "", "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "miniprogram-barrage": "^1.1.0", "miniprogram-recycle-view": "^0.1.5", "wxml-to-canvas": "^1.1.1", "threejs-miniprogram": "0.0.3" } } ================================================ FILE: miniprogram/packageAPI/components/tdesign-miniprogram/cell/README.en-US.md ================================================ :: BASE_DOC :: ## API ### Cell Props name | type | default | description | required -- | -- | -- | -- | -- style | Object | - | CSS(Cascading Style Sheets) | N custom-style | Object | - | CSS(Cascading Style Sheets),used to set style on virtual component | N align | String | middle | options: top/middle/bottom | N arrow | Boolean / Object | false | \- | N bordered | Boolean | true | \- | N description | String / Slot | - | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/blob/develop/src/common/common.ts) | N hover | Boolean | - | \- | N image | String / Slot | - | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/blob/develop/src/common/common.ts) | N jump-type | String | navigateTo | options: switchTab/reLaunch/redirectTo/navigateTo | N left-icon | String / Object / Slot | - | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/blob/develop/src/common/common.ts) | N note | String / Slot | - | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/blob/develop/src/common/common.ts) | N required | Boolean | false | \- | N right-icon | String / Object / Slot | - | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/blob/develop/src/common/common.ts) | N title | String / Slot | - | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/blob/develop/src/common/common.ts) | N url | String | - | \- | N ### Cell Events name | params | description -- | -- | -- click | - | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/blob/develop/src/common/common.ts) ### Cell External Classes className | Description -- | -- t-class | \- t-class-center | \- t-class-description | \- t-class-hover | \- t-class-image | \- t-class-left | \- t-class-left-icon | \- t-class-note | \- t-class-right | \- t-class-right-icon | \- t-class-title | \- ### CSS Variables The component provides the following CSS variables, which can be used to customize styles. Name | Default Value | Description -- | -- | -- --td-cell-group-border-color | @border-color | - --td-cell-group-title-bg-color | @bg-color-secondarycontainer | - --td-cell-group-title-color | @font-gray-3 | - --td-cell-group-title-font-size | 28rpx | - --td-cell-group-title-line-height | 90rpx | - --td-cell-group-title-padding-left | 32rpx | - --td-cell-bg-color | @bg-color-container | - --td-cell-border-color | @component-stroke | - --td-cell-border-width | 1px | - --td-cell-border-left-space | @cell-horizontal-padding | - --td-cell-border-right-space | 0 | - --td-cell-description-color | @font-gray-2 | - --td-cell-description-font-size | @font-size-base | - --td-cell-description-line-height | 44rpx | - --td-cell-height | auto | - --td-cell-horizontal-padding | 32rpx | - --td-cell-hover-color | @bg-color-secondarycontainer | - --td-cell-image-height | 96rpx | - --td-cell-image-width | 96rpx | - --td-cell-left-icon-color | @brand-color | - --td-cell-left-icon-font-size | 48rpx | - --td-cell-line-height | 48rpx | - --td-cell-note-color | @font-gray-3 | - --td-cell-note-font-size | @font-size-m | - --td-cell-required-color | @error-color-6 | - --td-cell-required-font-size | @font-size-m | - --td-cell-right-icon-color | @font-gray-3 | - --td-cell-right-icon-font-size | 48rpx | - --td-cell-title-color | @font-gray-1 | - --td-cell-title-font-size | @font-size-m | - --td-cell-vertical-padding | 32rpx | - ================================================ FILE: miniprogram/packageAPI/components/tdesign-miniprogram/cell/README.md ================================================ --- title: Cell 单元格 description: 用于各个类别行的信息展示。 spline: data isComponent: true --- ## 引入 全局引入,在 miniprogram 根目录下的`app.json`中配置,局部引入,在需要引入的页面或组件的`index.json`中配置。 ```json "usingComponents": { "t-cell": "tdesign-miniprogram/cell/cell", "t-cell-group": "tdesign-miniprogram/cell-group/cell-group" } ``` ## 代码演示 在开发者工具中预览效果

Tips: 请确保开发者工具为打开状态。导入开发者工具后,依次执行:npm i > 构建npm包 > 勾选 "将JS编译成ES5"

### 类型 单行单元格 {{ base }} 多行单元格 {{ multiple }} ### 样式 卡片单元格 {{ theme }} ## API ### Cell Props 名称 | 类型 | 默认值 | 描述 | 必传 -- | -- | -- | -- | -- style | Object | - | 样式 | N custom-style | Object | - | 样式,一般用于开启虚拟化组件节点场景 | N align | String | middle | 内容的对齐方式,默认居中对齐。可选项:top/middle/bottom | N arrow | Boolean / Object | false | 是否显示右侧箭头 | N bordered | Boolean | true | 是否显示下边框 | N description | String / Slot | - | 下方内容描述。[通用类型定义](https://github.com/Tencent/tdesign-miniprogram/blob/develop/src/common/common.ts) | N hover | Boolean | - | 是否开启点击反馈 | N image | String / Slot | - | 主图。[通用类型定义](https://github.com/Tencent/tdesign-miniprogram/blob/develop/src/common/common.ts) | N jump-type | String | navigateTo | 链接跳转类型。可选项:switchTab/reLaunch/redirectTo/navigateTo | N left-icon | String / Object / Slot | - | 左侧图标,出现在单元格标题的左侧。[通用类型定义](https://github.com/Tencent/tdesign-miniprogram/blob/develop/src/common/common.ts) | N note | String / Slot | - | 和标题同行的说明文字。[通用类型定义](https://github.com/Tencent/tdesign-miniprogram/blob/develop/src/common/common.ts) | N required | Boolean | false | 是否显示表单必填星号 | N right-icon | String / Object / Slot | - | 最右侧图标。[通用类型定义](https://github.com/Tencent/tdesign-miniprogram/blob/develop/src/common/common.ts) | N title | String / Slot | - | 标题。[通用类型定义](https://github.com/Tencent/tdesign-miniprogram/blob/develop/src/common/common.ts) | N url | String | - | 点击后跳转链接地址。如果值为空,则表示不需要跳转 | N ### Cell Events 名称 | 参数 | 描述 -- | -- | -- click | - | 右侧内容。[通用类型定义](https://github.com/Tencent/tdesign-miniprogram/blob/develop/src/common/common.ts) ### Cell External Classes 类名 | 描述 -- | -- t-class | 根节点样式类 t-class-center | 中间(`title`, `description`)内容样式类 t-class-description | 下方描述内容样式类 t-class-hover | 悬停样式类 t-class-image | 图片样式类 t-class-left | 左侧内容样式类 t-class-left-icon | 左侧图标样式类 t-class-note | 右侧说明文字样式类 t-class-right | 右侧内容样式类 t-class-right-icon | 右侧图标样式类 t-class-title | 标题样式类 ### CSS Variables 组件提供了下列 CSS 变量,可用于自定义样式。 名称 | 默认值 | 描述 -- | -- | -- --td-cell-group-border-color | @component-stroke | - --td-cell-group-title-bg-color | @bg-color-secondarycontainer | - --td-cell-group-title-color | @font-gray-3 | - --td-cell-group-title-font-size | 28rpx | - --td-cell-group-title-line-height | 90rpx | - --td-cell-group-title-padding-left | 32rpx | - --td-cell-bg-color | @bg-color-container | - --td-cell-border-color | @component-stroke | - --td-cell-border-width | 1px | - --td-cell-border-left-space | @cell-horizontal-padding | - --td-cell-border-right-space | 0 | - --td-cell-description-color | @font-gray-2 | - --td-cell-description-font-size | @font-size-base | - --td-cell-description-line-height | 44rpx | - --td-cell-height | auto | - --td-cell-horizontal-padding | 32rpx | - --td-cell-hover-color | @bg-color-secondarycontainer | - --td-cell-image-height | 96rpx | - --td-cell-image-width | 96rpx | - --td-cell-left-icon-color | @brand-color | - --td-cell-left-icon-font-size | 48rpx | - --td-cell-line-height | 48rpx | - --td-cell-note-color | @font-gray-3 | - --td-cell-note-font-size | @font-size-m | - --td-cell-required-color | @error-color-6 | - --td-cell-required-font-size | @font-size-m | - --td-cell-right-icon-color | @font-gray-3 | - --td-cell-right-icon-font-size | 48rpx | - --td-cell-title-color | @font-gray-1 | - --td-cell-title-font-size | @font-size-m | - --td-cell-vertical-padding | 32rpx | - ================================================ FILE: miniprogram/packageAPI/components/tdesign-miniprogram/cell/cell.d.ts ================================================ import { SuperComponent, RelationsOptions } from '../common/src/index'; export default class Cell extends SuperComponent { externalClasses: string[]; relations: RelationsOptions; options: { multipleSlots: boolean; }; properties: import("./type").TdCellProps; data: { prefix: string; classPrefix: string; isLastChild: boolean; }; observers: { leftIcon(v: any): void; rightIcon(v: any): void; arrow(v: any): void; }; setIcon(name: any, value: any, defaultValue: any): void; onClick(e: any): void; jumpLink(urlKey?: string, link?: string): void; } ================================================ FILE: miniprogram/packageAPI/components/tdesign-miniprogram/cell/cell.js ================================================ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { SuperComponent, wxComponent } from '../common/src/index'; import config from '../common/config'; import props from './props'; import { calcIcon } from '../common/utils'; const { prefix } = config; const name = `${prefix}-cell`; let Cell = class Cell extends SuperComponent { constructor() { super(...arguments); this.externalClasses = [ `${prefix}-class`, `${prefix}-class-title`, `${prefix}-class-description`, `${prefix}-class-note`, `${prefix}-class-hover`, `${prefix}-class-image`, `${prefix}-class-left`, `${prefix}-class-left-icon`, `${prefix}-class-center`, `${prefix}-class-right`, `${prefix}-class-right-icon`, ]; this.relations = { '../cell-group/cell-group': { type: 'parent', }, }; this.options = { multipleSlots: true, }; this.properties = props; this.data = { prefix, classPrefix: name, isLastChild: false, }; this.observers = { leftIcon(v) { this.setIcon('_leftIcon', v, ''); }, rightIcon(v) { this.setIcon('_rightIcon', v, ''); }, arrow(v) { this.setIcon('_arrow', v, 'chevron-right'); }, }; } setIcon(name, value, defaultValue) { this.setData({ [name]: calcIcon(value, defaultValue), }); } onClick(e) { this.triggerEvent('click', e.detail); this.jumpLink(); } jumpLink(urlKey = 'url', link = 'jumpType') { const url = this.data[urlKey]; const jumpType = this.data[link]; if (url) { wx[jumpType]({ url }); } } }; Cell = __decorate([ wxComponent() ], Cell); export default Cell; ================================================ FILE: miniprogram/packageAPI/components/tdesign-miniprogram/cell/cell.json ================================================ { "component": true, "styleIsolation": "apply-shared", "usingComponents": { "t-icon": "../icon/icon", "t-image": "../image/image" } } ================================================ FILE: miniprogram/packageAPI/components/tdesign-miniprogram/cell/cell.wxml ================================================