Authored by shuaiguo

Merge branch 'refs/heads/develop'

... ... @@ -13,7 +13,9 @@ function queryString() {
const getAppPath = () => {
let params = queryString();
let openbyYohobuy = params['openby:yohobuy'] || '';
let appPath = '';
if (openbyYohobuy) {
... ...
... ... @@ -253,7 +253,9 @@ const yoho = {
type: 0,
updateflag: Date.now() + '',
url: url,
param: args
param: args,
from_page_name: args.from_page_name,
from_page_param: args.from_page_param
}
});
}
... ...
... ... @@ -35,6 +35,7 @@ export default {
const commentId = this.$attrs['dest-id'];
const articleId = this.$attrs['article-id'];
const commentType = this.$attrs.commentType;
let menu = [];
if (authorUid === uid || commentUid === uid) {
... ...
... ... @@ -402,6 +402,7 @@ export default {
*/
article = JSON.parse(JSON.stringify(article)); // 防止直接修改vuex数据,拷贝一份数据副本
let text = article.blockList[1].contentData, str = '';
let atUserInfo = article.atUserInfo;
Object.keys(atUserInfo).forEach((key) => {
... ...
... ... @@ -145,6 +145,7 @@ export default {
toArticlePage() {
if (this.isMiniapp()) {
let url = `http://m.yohobuy.com/grass/article/${this.data.articleId}`;
let h5url = `http://m.yohobuy.com?openby:yohobuy={"action":"go.h5","params":{"h5back":"${encodeURIComponent(url)}"}}`;
/* eslint-disable-next-line */
... ...
... ... @@ -23,7 +23,7 @@
</template>
<template v-if="item.relatedReco">
<div class="products">
<ProductGroup name="articleTwoColumn" :pos-id="sceneId" :article-id="articleId" v-for="(p,index) in item.relatedReco.goods" :data="[p]" :key="index"></ProductGroup>
<ProductGroup name="ArticleDetail" :pos-id="sceneId" :article-id="articleId" v-for="(p,index) in item.relatedReco.goods" :data="[p]" :key="index"></ProductGroup>
</div>
</template>
</template>
... ...
... ... @@ -81,7 +81,7 @@ export default {
}
if (line > this.maxLines) {
textArr[this.maxLines] = textArr[this.maxLines].substring(0, Math.min(17, textArr[this.maxLines].length));
textArr[this.maxLines] = textArr[this.maxLines].substring(0, Math.max(17, textArr[this.maxLines].length));
return false;
}
});
... ...
... ... @@ -25,7 +25,7 @@
<div v-if="recomendProduct.length">
<LayoutTitle class="rec-goods-title">推荐商品</LayoutTitle>
<ProductGroup name="articleTwoColumn" :data="recomendProduct" :share="share" model="2"></ProductGroup>
<ProductGroup name="ArticleDetail" :data="recomendProduct" :share="share" model="2"></ProductGroup>
</div>
<LayoutTitle v-if="listTitle" class="rec-article-title">{{listTitle}}</LayoutTitle>
... ... @@ -55,7 +55,8 @@ import ArticleDetailFooter from './article-footer';
import ArticleItemSlideImage from '../article/article-item-slide-image';
import ArticleDetailHeader from './article-header';
import YAS from 'utils/yas-constants';
import { mapState, mapMutations, createNamespacedHelpers } from 'vuex';
import { createNamespacedHelpers, mapMutations, mapState } from 'vuex';
import qs from 'qs';
const { mapState: mapArticleState, mapActions, mapGetters } = createNamespacedHelpers('article');
... ... @@ -220,8 +221,6 @@ export default {
const vm = this;
const { childNodes = [] } = richText.childNodes[0];
console.log(childNodes[0].nodeName);
// 特殊排版兼容
if (childNodes.length === 1 && childNodes[0].nodeName === 'SECTION') {
... ... @@ -245,7 +244,37 @@ export default {
if (ele && ele.querySelector && ele.querySelector('img')) {
ele.classList.add('yoho-img-link');
ele.addEventListener('click', function() {
const defaultName = 'ArticleDetail';
const name = vm.$yoho.isiOS ? `iFP_${defaultName}` : `aFP_${defaultName}`;
ele.addEventListener('click', function(e) {
e.preventDefault();
// 对商品详情链接单独处理
let url = ele;
const searchParams = qs.parse(url.search.substring(1));
let openBy = searchParams['openby:yohobuy'];
let skn = searchParams.product_skn;
if (skn) {
if (openBy) {
openBy = JSON.parse(openBy);
if (!openBy.params.from_page_name || !openBy.params.from_page_param) {
openBy.params.from_page_name = name;
openBy.params.from_page_param = vm.data.articleId;
url = url.protocol + '//' + url.host + '?product_skn=' + skn + '&openby:yohobuy=' + JSON.stringify(openBy);
}
}
}
vm.$yoho.goNewPage({
url: url + ''
});
vm.$store.dispatch('reportYas', {
params: {
appop: YAS.eventName.articleImageClick,
... ...
... ... @@ -12,7 +12,7 @@
:width="data.width" :height="data.height"></VideoPlayer>
<ArticleItemSlide v-else :thumb="thumb" :share="share" :data="slideData" :slide-index="slideIndex" :lazy="lazy"
@on-praise="onPraise" @change="onChangeSlide"></ArticleItemSlide>
<ProductGroup name="articleTwoColumn" :article-id="data.articleId" :pos-id="0" :index="0" :thumb="thumb"
<ProductGroup name="ArticleDetail" :article-id="data.articleId" :pos-id="0" :index="0" :thumb="thumb"
v-if="productListData.length" :share="share" :data="productListData" :lazy="lazy"></ProductGroup>
<div class="context-title">{{data.articleTitle}}</div>
... ...
... ... @@ -380,6 +380,7 @@ export default {
let destIndex = numString.length - 4;
let destString = numString.substring(0, destIndex);
let subString = numString.substring(destIndex, destIndex + 1);
if (subString !== '0') {
... ...
... ... @@ -15,6 +15,7 @@ function _version2num(version) {
// eslint-disable-next-line no-unused-vars
function versionCompare(left, right) {
let leftNum = _version2num(left);
let rightNum = _version2num(right);
if (leftNum === rightNum) {
... ... @@ -50,6 +51,7 @@ const filterEmoji = text => {
// eslint-disable-next-line no-unused-vars
const getDetailShareData = (article, app_version = '6.9.11') => {
let shareImage = '';
let desc = '';
if (article.sort === 2) {
... ... @@ -81,6 +83,7 @@ const getDetailShareData = (article, app_version = '6.9.11') => {
// eslint-disable-next-line no-unused-vars
const requiredVersion = '6.9.11';
let hideType = ['7', '8', '9'];
if (versionCompare(app_version, requiredVersion) >= 0) {
... ...
... ... @@ -16,7 +16,9 @@ const config = global.yoho.config;
const isDev = process.env.NODE_ENV === 'development' || !process.env.NODE_ENV;
let renderer;
let serverBundle;
let degradeHtml;
const hbs = fs.readFileSync(path.join(__dirname, '../views/index.hbs'), 'utf-8');
... ... @@ -123,6 +125,7 @@ const getChannel = (yoho) => {
const getCacheKey = (req, route) => {
const urlObj = url.parse(req.url);
let ck = urlObj.pathname;
if (route.query) {
... ... @@ -177,10 +180,14 @@ const render = (route) => {
return handlerError(err, req, res, next);
}
let styles = context.renderStyles();
let scripts = context.renderScripts();
let resources = context.renderResourceHints();
const states = context.renderState();
let asyncScripts;
let zk = {
asyncJs: _.get(req.app.locals.wap, 'webapp.ios-async-js', true)
};
... ...
{
"name": "yoho-community-web",
"version": "6.9.16-beta-8",
"version": "6.9.17",
"private": true,
"description": "A New Yohobuy Project With Express",
"repository": {
... ... @@ -116,8 +116,8 @@
"lint-staged": "^8.2.1",
"memory-fs": "^0.4.1",
"mini-css-extract-plugin": "^0.5.0",
"node-sass": "^4.11.0",
"nodemon": "^1.18.8",
"node-sass": "^4.12.0",
"nodemon": "^2.0.1",
"optimize-css-assets-webpack-plugin": "^5.0.1",
"postcss-calc": "^7.0.1",
"postcss-loader": "^3.0.0",
... ...
... ... @@ -1043,6 +1043,14 @@ anymatch@^2.0.0:
micromatch "^3.1.4"
normalize-path "^2.1.1"
anymatch@~3.1.1:
version "3.1.1"
resolved "http://npm.yohops.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
integrity sha1-xV7PAhheJGklk5kxDBc84xIzsUI=
dependencies:
normalize-path "^3.0.0"
picomatch "^2.0.4"
aproba@^1.0.3, aproba@^1.1.1:
version "1.2.0"
resolved "http://npm.yohops.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
... ... @@ -1347,6 +1355,11 @@ binary-extensions@^1.0.0:
version "1.12.0"
resolved "http://npm.yohops.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14"
binary-extensions@^2.0.0:
version "2.0.0"
resolved "http://npm.yohops.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c"
integrity sha1-I8DfFPaogHf1+YbA0WfsA8PVU3w=
block-stream@*:
version "0.0.9"
resolved "http://npm.yohops.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
... ... @@ -1425,7 +1438,7 @@ braces@^2.3.0, braces@^2.3.1:
split-string "^3.0.2"
to-regex "^3.0.1"
braces@^3.0.1:
braces@^3.0.1, braces@~3.0.2:
version "3.0.2"
resolved "http://npm.yohops.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
dependencies:
... ... @@ -1737,7 +1750,7 @@ check-types@^7.3.0:
version "7.4.0"
resolved "http://npm.yohops.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4"
chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4:
chokidar@^2.0.0, chokidar@^2.0.2:
version "2.0.4"
resolved "http://npm.yohops.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26"
dependencies:
... ... @@ -1756,6 +1769,21 @@ chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4:
optionalDependencies:
fsevents "^1.2.2"
chokidar@^3.2.2:
version "3.3.0"
resolved "http://npm.yohops.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6"
integrity sha1-EsBxRmjFWAD2WeJi1JYql/r1VKY=
dependencies:
anymatch "~3.1.1"
braces "~3.0.2"
glob-parent "~5.1.0"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.2.0"
optionalDependencies:
fsevents "~2.1.1"
chownr@^1.0.1, chownr@^1.1.1:
version "1.1.1"
resolved "http://npm.yohops.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
... ... @@ -2500,7 +2528,7 @@ debug@=3.1.0:
dependencies:
ms "2.0.0"
debug@^3.0.1, debug@^3.1.0, debug@^3.2.5:
debug@^3.0.1, debug@^3.1.0, debug@^3.2.5, debug@^3.2.6:
version "3.2.6"
resolved "http://npm.yohops.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
dependencies:
... ... @@ -3548,6 +3576,11 @@ fsevents@^1.2.2:
nan "^2.9.2"
node-pre-gyp "^0.10.0"
fsevents@~2.1.1:
version "2.1.2"
resolved "http://npm.yohops.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805"
integrity sha1-TAofs0vGjlQ7S4Kp7Dkr+9qECAU=
fstream@^1.0.0, fstream@^1.0.2:
version "1.0.11"
resolved "http://npm.yohops.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
... ... @@ -3639,6 +3672,13 @@ glob-parent@^3.1.0:
is-glob "^3.1.0"
path-dirname "^1.0.0"
glob-parent@~5.1.0:
version "5.1.0"
resolved "http://npm.yohops.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2"
integrity sha1-X0wdHnSNMM1zrSlEs1d6gbCB6MI=
dependencies:
is-glob "^4.0.1"
glob-to-regexp@^0.3.0:
version "0.3.0"
resolved "http://npm.yohops.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
... ... @@ -4376,6 +4416,13 @@ is-binary-path@^1.0.0:
dependencies:
binary-extensions "^1.0.0"
is-binary-path@~2.1.0:
version "2.1.0"
resolved "http://npm.yohops.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
integrity sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=
dependencies:
binary-extensions "^2.0.0"
is-buffer@^1.1.5, is-buffer@~1.1.1:
version "1.1.6"
resolved "http://npm.yohops.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
... ... @@ -4517,7 +4564,7 @@ is-glob@^4.0.0:
dependencies:
is-extglob "^2.1.1"
is-glob@^4.0.1:
is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.1"
resolved "http://npm.yohops.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
dependencies:
... ... @@ -5010,10 +5057,6 @@ lodash._reinterpolate@~3.0.0:
version "3.0.0"
resolved "http://npm.yohops.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
lodash.assign@^4.2.0:
version "4.2.0"
resolved "http://npm.yohops.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
lodash.camelcase@^4.3.0:
version "4.3.0"
resolved "http://npm.yohops.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
... ... @@ -5024,7 +5067,7 @@ lodash.clone@~4.3.2:
dependencies:
lodash._baseclone "~4.5.0"
lodash.clonedeep@^4.3.2, lodash.clonedeep@^4.5.0:
lodash.clonedeep@^4.5.0:
version "4.5.0"
resolved "http://npm.yohops.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
... ... @@ -5044,10 +5087,6 @@ lodash.memoize@^4.1.2:
version "4.1.2"
resolved "http://npm.yohops.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
lodash.mergewith@^4.6.0:
version "4.6.1"
resolved "http://npm.yohops.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927"
lodash.snakecase@^4.1.1:
version "4.1.1"
resolved "http://npm.yohops.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d"
... ... @@ -5077,6 +5116,11 @@ lodash@^4.0.0, lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.3,
version "4.17.11"
resolved "http://npm.yohops.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
lodash@^4.17.15:
version "4.17.15"
resolved "http://npm.yohops.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
integrity sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=
log-symbols@^1.0.2:
version "1.0.2"
resolved "http://npm.yohops.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
... ... @@ -5572,7 +5616,12 @@ mux.js@5.1.1:
version "5.1.1"
resolved "http://npm.yohops.com/mux.js/-/mux.js-5.1.1.tgz#0e95f048b4ac51d413c9ddc2d78e4cefad8d06de"
nan@^2.10.0, nan@^2.9.2:
nan@^2.13.2:
version "2.14.0"
resolved "http://npm.yohops.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
integrity sha1-eBj3IgJ7JFmobwKV1DTR/CM2xSw=
nan@^2.9.2:
version "2.12.1"
resolved "http://npm.yohops.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552"
... ... @@ -5708,9 +5757,10 @@ node-releases@^1.1.8:
dependencies:
semver "^5.3.0"
node-sass@^4.11.0:
version "4.11.0"
resolved "http://npm.yohops.com/node-sass/-/node-sass-4.11.0.tgz#183faec398e9cbe93ba43362e2768ca988a6369a"
node-sass@^4.12.0:
version "4.13.0"
resolved "http://npm.yohops.com/node-sass/-/node-sass-4.13.0.tgz#b647288babdd6a1cb726de4545516b31f90da066"
integrity sha1-tkcoi6vdahy3Jt5FRVFrMfkNoGY=
dependencies:
async-foreach "^0.1.3"
chalk "^1.1.1"
... ... @@ -5719,12 +5769,10 @@ node-sass@^4.11.0:
get-stdin "^4.0.1"
glob "^7.0.3"
in-publish "^2.0.0"
lodash.assign "^4.2.0"
lodash.clonedeep "^4.3.2"
lodash.mergewith "^4.6.0"
lodash "^4.17.15"
meow "^3.7.0"
mkdirp "^0.5.1"
nan "^2.10.0"
nan "^2.13.2"
node-gyp "^3.8.0"
npmlog "^4.0.0"
request "^2.88.0"
... ... @@ -5739,17 +5787,18 @@ node-zookeeper-client@^0.2.2:
async "~0.2.7"
underscore "~1.4.4"
nodemon@^1.18.8:
version "1.18.9"
resolved "http://npm.yohops.com/nodemon/-/nodemon-1.18.9.tgz#90b467efd3b3c81b9453380aeb2a2cba535d0ead"
nodemon@^2.0.1:
version "2.0.1"
resolved "http://npm.yohops.com/nodemon/-/nodemon-2.0.1.tgz#cec436f8153ad5d3e6c27c304849a06cabea71cc"
integrity sha1-zsQ2+BU61dPmwnwwSEmgbKvqccw=
dependencies:
chokidar "^2.0.4"
debug "^3.1.0"
chokidar "^3.2.2"
debug "^3.2.6"
ignore-by-default "^1.0.1"
minimatch "^3.0.4"
pstree.remy "^1.1.6"
semver "^5.5.0"
supports-color "^5.2.0"
pstree.remy "^1.1.7"
semver "^5.7.1"
supports-color "^5.5.0"
touch "^3.1.0"
undefsafe "^2.0.2"
update-notifier "^2.5.0"
... ... @@ -5788,7 +5837,7 @@ normalize-path@^2.1.1:
dependencies:
remove-trailing-separator "^1.0.1"
normalize-path@^3.0.0:
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "http://npm.yohops.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
... ... @@ -6252,6 +6301,11 @@ performance-now@^2.1.0:
version "2.1.0"
resolved "http://npm.yohops.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
picomatch@^2.0.4:
version "2.1.1"
resolved "http://npm.yohops.com/picomatch/-/picomatch-2.1.1.tgz#ecdfbea7704adb5fe6fb47f9866c4c0e15e905c5"
integrity sha1-7N++p3BK21/m+0f5hmxMDhXpBcU=
picomatch@^2.0.5:
version "2.0.7"
resolved "http://npm.yohops.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6"
... ... @@ -6798,9 +6852,10 @@ psl@^1.1.24, psl@^1.1.28:
version "1.1.31"
resolved "http://npm.yohops.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184"
pstree.remy@^1.1.6:
version "1.1.6"
resolved "http://npm.yohops.com/pstree.remy/-/pstree.remy-1.1.6.tgz#73a55aad9e2d95814927131fbf4dc1b62d259f47"
pstree.remy@^1.1.7:
version "1.1.7"
resolved "http://npm.yohops.com/pstree.remy/-/pstree.remy-1.1.7.tgz#c76963a28047ed61542dc361aa26ee55a7fa15f3"
integrity sha1-x2ljooBH7WFULcNhqibuVaf6FfM=
public-encrypt@^4.0.0:
version "4.0.3"
... ... @@ -7006,6 +7061,13 @@ readdirp@^2.0.0:
micromatch "^3.1.10"
readable-stream "^2.0.2"
readdirp@~3.2.0:
version "3.2.0"
resolved "http://npm.yohops.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839"
integrity sha1-wwwzNSsSyW37S4lUIaSf1alZODk=
dependencies:
picomatch "^2.0.4"
rechoir@^0.6.2:
version "0.6.2"
resolved "http://npm.yohops.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
... ... @@ -7485,6 +7547,11 @@ semver-diff@^2.0.0:
version "5.6.0"
resolved "http://npm.yohops.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
semver@^5.7.1:
version "5.7.1"
resolved "http://npm.yohops.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=
semver@~5.3.0:
version "5.3.0"
resolved "http://npm.yohops.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
... ... @@ -8235,7 +8302,7 @@ supports-color@^3.2.3:
dependencies:
has-flag "^1.0.0"
supports-color@^5.1.0, supports-color@^5.2.0, supports-color@^5.3.0, supports-color@^5.5.0:
supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.5.0:
version "5.5.0"
resolved "http://npm.yohops.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
dependencies:
... ...