vtils
Version:
一个面向业务的 JavaScript/TypeScript 实用程序库。
68 lines (67 loc) • 2.35 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
exports.__esModule = true;
exports.MiniProgramUrl = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _lodashUni = require("lodash-uni");
var _createUrlQueryString = require("./createUrlQueryString");
var _parseUrlQueryString = require("./parseUrlQueryString");
/**
* 小程序链接。
*/
var MiniProgramUrl = exports.MiniProgramUrl = /*#__PURE__*/function () {
function MiniProgramUrl(payload) {
this.payload = {};
if (typeof payload === 'string') {
this.update(JSON.parse(payload.substring(5)));
} else {
this.update(payload);
}
}
var _proto = MiniProgramUrl.prototype;
_proto.getPath = function getPath() {
return (this.payload.path ? this.payload.path.substring(1) : '') + (this.payload.query ? "?" + (0, _createUrlQueryString.createUrlQueryString)(this.payload.query) : '');
};
_proto.update = function update(payload) {
if (payload.path) {
if (payload.path[0] !== '/') {
payload.path = "/" + payload.path;
}
var _payload$path$split = payload.path.split('?'),
path = _payload$path$split[0],
query = _payload$path$split[1];
if (query) {
payload.path = path;
payload.query = (0, _extends2.default)({}, (0, _parseUrlQueryString.parseUrlQueryString)(query), payload.query);
}
}
(0, _lodashUni.assign)(this.payload, payload);
return this;
};
_proto.toJson = function toJson() {
return this.payload;
};
_proto.toString = function toString() {
return "mp://" + JSON.stringify(this.payload);
};
_proto.toWxOpenLaunchWeappAttrs = function toWxOpenLaunchWeappAttrs() {
return {
username: this.payload.rawId,
path: this.getPath(),
envVersion: this.payload.version,
extraData: this.payload.data ? JSON.stringify(this.payload.data) : undefined
};
};
_proto.toWxNavigateToMiniProgramParams = function toWxNavigateToMiniProgramParams() {
return {
appId: this.payload.appId,
path: this.getPath(),
envVersion: this.payload.version,
extraData: this.payload.data
};
};
MiniProgramUrl.is = function is(value) {
return value.substring(0, 5) === 'mp://';
};
return MiniProgramUrl;
}();