@dcloudio/uni-cli-shared 3.0.0-alpha-3021220211102001 → 3.0.0-alpha-3021220211105008

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,6 +3,7 @@ export declare const EXTNAME_JS: string[];
3
3
  export declare const EXTNAME_VUE: string[];
4
4
  export declare const EXTNAME_VUE_RE: RegExp;
5
5
  export declare const EXTNAME_JS_RE: RegExp;
6
+ export declare const ASSETS_INLINE_LIMIT: number;
6
7
  export declare const BINDING_COMPONENTS = "__BINDING_COMPONENTS__";
7
8
  export declare const PAGE_EXTNAME_APP: string[];
8
9
  export declare const PAGE_EXTNAME: string[];
package/dist/constants.js CHANGED
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.COMMON_EXCLUDE = exports.BASE_COMPONENTS_STYLE_PATH = exports.H5_COMPONENTS_STYLE_PATH = exports.H5_FRAMEWORK_STYLE_PATH = exports.H5_API_STYLE_PATH = exports.PAGE_EXTNAME = exports.PAGE_EXTNAME_APP = exports.BINDING_COMPONENTS = exports.EXTNAME_JS_RE = exports.EXTNAME_VUE_RE = exports.EXTNAME_VUE = exports.EXTNAME_JS = exports.PUBLIC_DIR = void 0;
3
+ exports.COMMON_EXCLUDE = exports.BASE_COMPONENTS_STYLE_PATH = exports.H5_COMPONENTS_STYLE_PATH = exports.H5_FRAMEWORK_STYLE_PATH = exports.H5_API_STYLE_PATH = exports.PAGE_EXTNAME = exports.PAGE_EXTNAME_APP = exports.BINDING_COMPONENTS = exports.ASSETS_INLINE_LIMIT = exports.EXTNAME_JS_RE = exports.EXTNAME_VUE_RE = exports.EXTNAME_VUE = exports.EXTNAME_JS = exports.PUBLIC_DIR = void 0;
4
4
  exports.PUBLIC_DIR = 'static';
5
5
  exports.EXTNAME_JS = ['.js', '.ts', '.jsx', '.tsx'];
6
6
  exports.EXTNAME_VUE = ['.vue', '.nvue'];
7
7
  exports.EXTNAME_VUE_RE = /\.(vue|nvue)$/;
8
8
  exports.EXTNAME_JS_RE = /\.[jt]sx?$/;
9
+ exports.ASSETS_INLINE_LIMIT = 40 * 1024;
9
10
  exports.BINDING_COMPONENTS = '__BINDING_COMPONENTS__';
10
11
  // APP 平台解析页面后缀的优先级
11
12
  exports.PAGE_EXTNAME_APP = ['.nvue', '.vue', '.tsx', '.jsx', '.js'];
package/dist/hbx/index.js CHANGED
@@ -9,15 +9,8 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
9
9
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
- var __importDefault = (this && this.__importDefault) || function (mod) {
13
- return (mod && mod.__esModule) ? mod : { "default": mod };
14
- };
15
12
  Object.defineProperty(exports, "__esModule", { value: true });
16
13
  exports.initModuleAlias = void 0;
17
- const path_1 = __importDefault(require("path"));
18
- process.env.UNI_HBUILDERX_PLUGINS =
19
- process.env.UNI_HBUILDERX_PLUGINS ||
20
- path_1.default.resolve(__dirname, '../../../../../../');
21
14
  __exportStar(require("./env"), exports);
22
15
  var alias_1 = require("./alias");
23
16
  Object.defineProperty(exports, "initModuleAlias", { enumerable: true, get: function () { return alias_1.initModuleAlias; } });
package/dist/hbx/log.d.ts CHANGED
@@ -2,3 +2,5 @@ import { Formatter } from '../logs/format';
2
2
  export declare const h5ServeFormatter: Formatter;
3
3
  export declare const removeInfoFormatter: Formatter;
4
4
  export declare const removeWarnFormatter: Formatter;
5
+ export declare const FilenameFormatter: Formatter;
6
+ export declare const HBuilderXFileFormatter: Formatter;
package/dist/hbx/log.js CHANGED
@@ -1,6 +1,11 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.removeWarnFormatter = exports.removeInfoFormatter = exports.h5ServeFormatter = void 0;
6
+ exports.HBuilderXFileFormatter = exports.FilenameFormatter = exports.removeWarnFormatter = exports.removeInfoFormatter = exports.h5ServeFormatter = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const utils_1 = require("../utils");
4
9
  const SIGNAL_H5_LOCAL = ' > Local:';
5
10
  const SIGNAL_H5_NETWORK = ' > Network:';
6
11
  const networkLogs = [];
@@ -40,7 +45,7 @@ exports.removeInfoFormatter = {
40
45
  return '';
41
46
  },
42
47
  };
43
- const REMOVED_WARN_MSGS = ['warnings when minifying css:'];
48
+ const REMOVED_WARN_MSGS = [];
44
49
  exports.removeWarnFormatter = {
45
50
  test(msg) {
46
51
  return !!REMOVED_WARN_MSGS.find((m) => msg.includes(m));
@@ -49,3 +54,32 @@ exports.removeWarnFormatter = {
49
54
  return '';
50
55
  },
51
56
  };
57
+ const fileRE = /file:\s(.*):(\d+):(\d+)/;
58
+ exports.FilenameFormatter = {
59
+ test(msg) {
60
+ return fileRE.test(msg);
61
+ },
62
+ format(msg) {
63
+ return msg.replace(fileRE, (_, filename, line, column) => {
64
+ return `file: ${filename.split('?')[0]}:${line}:${column}`;
65
+ });
66
+ },
67
+ };
68
+ exports.HBuilderXFileFormatter = {
69
+ test(msg) {
70
+ return fileRE.test(msg);
71
+ },
72
+ format(msg) {
73
+ return (msg
74
+ // remove color
75
+ .replace(/\x1B[[(?);]{0,2}(;?\d)*./g, '')
76
+ .replace(fileRE, (_, filename, line, column) => {
77
+ return ('at ' +
78
+ (0, utils_1.normalizePath)(path_1.default.relative(process.env.UNI_INPUT_DIR, filename.split('?')[0])) +
79
+ ':' +
80
+ line +
81
+ ':' +
82
+ column);
83
+ }));
84
+ },
85
+ };
@@ -34,9 +34,13 @@ function parsePagesJson(jsonStr, platform, { debug, darkmode, networkTimeout, su
34
34
  !fs_1.default.existsSync(filename + '.vue')) {
35
35
  nvuePages.push(pagePath);
36
36
  }
37
- pageJsons[pagePath] = (0, shared_1.extend)({
38
- component: true,
39
- }, (0, utils_1.parseWindowOptions)(style, platform, windowOptionsMap));
37
+ const windowOptions = {};
38
+ if (platform === 'mp-baidu') {
39
+ // 仅百度小程序需要页面配置 component:true
40
+ // 快手小程序反而不能配置 component:true,故不能统一添加,目前硬编码处理
41
+ windowOptions.component = true;
42
+ }
43
+ pageJsons[pagePath] = (0, shared_1.extend)(windowOptions, (0, utils_1.parseWindowOptions)(style, platform, windowOptionsMap));
40
44
  }
41
45
  // pages
42
46
  (0, pages_1.validatePages)(pagesJson, jsonStr);
@@ -18,7 +18,7 @@ interface ShareWindowOptions {
18
18
  declare type Style = 'v2' | string;
19
19
  declare type RestartStrategy = 'homePage' | 'homePageAndLatestPage' | string;
20
20
  export interface PageWindowOptions extends ShareWindowOptions {
21
- component: true;
21
+ component?: true;
22
22
  disableScroll?: boolean;
23
23
  usingComponents?: UsingComponents;
24
24
  initialRenderingCache?: 'static' | string;
@@ -12,6 +12,12 @@ const initErrFormattersOnce = (0, uni_shared_1.once)(() => {
12
12
  if ((0, env_1.isInHBuilderX)()) {
13
13
  errFormatters.push(alias_1.moduleAliasFormatter);
14
14
  }
15
+ if ((0, env_1.runByHBuilderX)()) {
16
+ errFormatters.push(log_1.HBuilderXFileFormatter);
17
+ }
18
+ else {
19
+ errFormatters.push(log_1.FilenameFormatter);
20
+ }
15
21
  });
16
22
  const initInfoFormattersOnce = (0, uni_shared_1.once)(() => {
17
23
  if ((0, env_1.isInHBuilderX)()) {
@@ -1,5 +1,11 @@
1
1
  import { EmittedAsset } from 'rollup';
2
2
  export interface MiniProgramCompilerOptions {
3
+ /**
4
+ * 需要延迟渲染的组件,通常是某个组件的某个事件会立刻触发,需要延迟到首次 render 之后,比如微信 editor 的 ready 事件,快手 switch 的 change
5
+ */
6
+ lazyElement?: {
7
+ [name: string]: string[];
8
+ };
3
9
  event?: {
4
10
  format(name: string, opts: {
5
11
  isCatch?: boolean;
@@ -14,6 +14,7 @@ const DEFAULT_KEYS = [
14
14
  'MP_ALIPAY',
15
15
  'MP_BAIDU',
16
16
  'MP_QQ',
17
+ 'MP_LARK',
17
18
  'MP_TOUTIAO',
18
19
  'MP_WEIXIN',
19
20
  'MP_KUAISHOU',
@@ -3,6 +3,8 @@ export * from './transformPageHead';
3
3
  export * from './transformComponent';
4
4
  export * from './transformEvent';
5
5
  export * from './transformTag';
6
+ export { ATTR_DATASET_EVENT_OPTS, createTransformOn, defaultMatch as matchTransformOn, } from './vOn';
7
+ export { createTransformModel, defaultMatch as matchTransformModel, } from './vModel';
6
8
  export declare const transformMatchMedia: import("@vue/compiler-core").NodeTransform;
7
9
  export declare const transformTapToClick: import("@vue/compiler-core").NodeTransform;
8
10
  export declare const transformComponentLink: (node: import("@vue/compiler-core").RootNode | import("@vue/compiler-core").TemplateChildNode, context: import("@vue/compiler-core").TransformContext) => void;
@@ -10,7 +10,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.transformComponentLink = exports.transformTapToClick = exports.transformMatchMedia = void 0;
13
+ exports.transformComponentLink = exports.transformTapToClick = exports.transformMatchMedia = exports.matchTransformModel = exports.createTransformModel = exports.matchTransformOn = exports.createTransformOn = exports.ATTR_DATASET_EVENT_OPTS = void 0;
14
14
  const transformTag_1 = require("./transformTag");
15
15
  const transformEvent_1 = require("./transformEvent");
16
16
  const transformComponent_1 = require("./transformComponent");
@@ -20,6 +20,13 @@ __exportStar(require("./transformPageHead"), exports);
20
20
  __exportStar(require("./transformComponent"), exports);
21
21
  __exportStar(require("./transformEvent"), exports);
22
22
  __exportStar(require("./transformTag"), exports);
23
+ var vOn_1 = require("./vOn");
24
+ Object.defineProperty(exports, "ATTR_DATASET_EVENT_OPTS", { enumerable: true, get: function () { return vOn_1.ATTR_DATASET_EVENT_OPTS; } });
25
+ Object.defineProperty(exports, "createTransformOn", { enumerable: true, get: function () { return vOn_1.createTransformOn; } });
26
+ Object.defineProperty(exports, "matchTransformOn", { enumerable: true, get: function () { return vOn_1.defaultMatch; } });
27
+ var vModel_1 = require("./vModel");
28
+ Object.defineProperty(exports, "createTransformModel", { enumerable: true, get: function () { return vModel_1.createTransformModel; } });
29
+ Object.defineProperty(exports, "matchTransformModel", { enumerable: true, get: function () { return vModel_1.defaultMatch; } });
23
30
  exports.transformMatchMedia = (0, transformTag_1.createTransformTag)({
24
31
  'match-media': 'uni-match-media',
25
32
  });
@@ -0,0 +1,12 @@
1
+ import { DirectiveTransform, ElementNode, TransformContext } from '@vue/compiler-core';
2
+ export declare function defaultMatch(node: ElementNode, context: TransformContext): boolean;
3
+ interface CreateTransformModelOptions {
4
+ match: typeof defaultMatch;
5
+ }
6
+ /**
7
+ * 百度、快手小程序的自定义组件,不支持动态事件绑定,故 v-model 也需要调整
8
+ * @param baseTransformModel
9
+ * @returns
10
+ */
11
+ export declare function createTransformModel(baseTransformModel: DirectiveTransform, { match }?: CreateTransformModelOptions): DirectiveTransform;
12
+ export {};
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTransformModel = exports.defaultMatch = void 0;
4
+ const utils_1 = require("../utils");
5
+ const vOn_1 = require("./vOn");
6
+ function defaultMatch(node, context) {
7
+ return (0, utils_1.isUserComponent)(node, context);
8
+ }
9
+ exports.defaultMatch = defaultMatch;
10
+ /**
11
+ * 百度、快手小程序的自定义组件,不支持动态事件绑定,故 v-model 也需要调整
12
+ * @param baseTransformModel
13
+ * @returns
14
+ */
15
+ function createTransformModel(baseTransformModel, { match } = {
16
+ match: defaultMatch,
17
+ }) {
18
+ return (dir, node, context, augmentor) => {
19
+ const res = baseTransformModel(dir, node, context, augmentor);
20
+ if (!match(node, context)) {
21
+ return res;
22
+ }
23
+ const props = res.props;
24
+ if (props[1]) {
25
+ // input,textarea 的 v-model 事件可能会被合并到已有的 input 中
26
+ const { arg, exp } = props[1];
27
+ (0, vOn_1.addEventOpts)(arg.content, exp, node);
28
+ props[1].exp = (0, vOn_1.createCustomEventExpr)();
29
+ }
30
+ return res;
31
+ };
32
+ }
33
+ exports.createTransformModel = createTransformModel;
@@ -0,0 +1,15 @@
1
+ import { ExpressionNode, DirectiveTransform, ElementNode, TransformContext } from '@vue/compiler-core';
2
+ export declare function defaultMatch(name: string, node: ElementNode, context: TransformContext): boolean;
3
+ interface CreateTransformOnOptions {
4
+ match: typeof defaultMatch;
5
+ }
6
+ /**
7
+ * 百度、快手小程序的自定义组件,不支持动态事件绑定,故转换为静态事件 + dataset
8
+ * @param baseTransformOn
9
+ * @returns
10
+ */
11
+ export declare function createTransformOn(baseTransformOn: DirectiveTransform, { match }?: CreateTransformOnOptions): DirectiveTransform;
12
+ export declare function createCustomEventExpr(): import("@vue/compiler-core").SimpleExpressionNode;
13
+ export declare function addEventOpts(event: string, value: ExpressionNode, node: ElementNode): void;
14
+ export declare const ATTR_DATASET_EVENT_OPTS = "data-e-o";
15
+ export {};
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ATTR_DATASET_EVENT_OPTS = exports.addEventOpts = exports.createCustomEventExpr = exports.createTransformOn = exports.defaultMatch = void 0;
4
+ const compiler_core_1 = require("@vue/compiler-core");
5
+ const utils_1 = require("../utils");
6
+ function defaultMatch(name, node, context) {
7
+ return isCustomEvent(name) && (0, utils_1.isUserComponent)(node, context);
8
+ }
9
+ exports.defaultMatch = defaultMatch;
10
+ /**
11
+ * 百度、快手小程序的自定义组件,不支持动态事件绑定,故转换为静态事件 + dataset
12
+ * @param baseTransformOn
13
+ * @returns
14
+ */
15
+ function createTransformOn(baseTransformOn, { match } = {
16
+ match: defaultMatch,
17
+ }) {
18
+ return (dir, node, context, augmentor) => {
19
+ const res = baseTransformOn(dir, node, context, augmentor);
20
+ const { name, arg, exp } = dir;
21
+ if (name !== 'on' || !arg || !exp || !(0, compiler_core_1.isStaticExp)(arg)) {
22
+ return res;
23
+ }
24
+ if (!match(arg.content, node, context)) {
25
+ return res;
26
+ }
27
+ const value = res.props[0].value;
28
+ res.props[0].value = createCustomEventExpr();
29
+ addEventOpts(arg.content, value, node);
30
+ return res;
31
+ };
32
+ }
33
+ exports.createTransformOn = createTransformOn;
34
+ function createCustomEventExpr() {
35
+ return (0, compiler_core_1.createSimpleExpression)('__e', true);
36
+ }
37
+ exports.createCustomEventExpr = createCustomEventExpr;
38
+ function addEventOpts(event, value, node) {
39
+ const attrName = node.tagType === 1 /* COMPONENT */
40
+ ? ATTR_DATA_EVENT_OPTS
41
+ : exports.ATTR_DATASET_EVENT_OPTS;
42
+ const opts = (0, compiler_core_1.findProp)(node, attrName, true);
43
+ if (!opts) {
44
+ node.props.push(createDataEventOptsProp(attrName, event, value));
45
+ }
46
+ else {
47
+ const children = opts.exp.children;
48
+ children.splice(children.length - 2, 0, createDataEventOptsProperty(event, value));
49
+ }
50
+ }
51
+ exports.addEventOpts = addEventOpts;
52
+ const ATTR_DATA_EVENT_OPTS = 'eO';
53
+ exports.ATTR_DATASET_EVENT_OPTS = 'data-e-o';
54
+ function createDataEventOptsProperty(event, exp) {
55
+ return (0, compiler_core_1.createCompoundExpression)([`'${event}'`, ': ', exp, ',']);
56
+ }
57
+ function createDataEventOptsProp(name, event, exp) {
58
+ return {
59
+ type: 7 /* DIRECTIVE */,
60
+ name: 'bind',
61
+ loc: compiler_core_1.locStub,
62
+ modifiers: [],
63
+ arg: (0, compiler_core_1.createSimpleExpression)(name, true),
64
+ exp: (0, compiler_core_1.createCompoundExpression)([
65
+ '{',
66
+ createDataEventOptsProperty(event, exp),
67
+ '}',
68
+ ]),
69
+ };
70
+ }
71
+ const builtInEvents = [
72
+ '__l',
73
+ 'tap',
74
+ 'longtap',
75
+ 'longpress',
76
+ 'touchstart',
77
+ 'touchmove',
78
+ 'touchcancel',
79
+ 'touchend',
80
+ 'touchforcechange',
81
+ 'transitionend',
82
+ 'animationstart',
83
+ 'animationiteration',
84
+ 'animationend',
85
+ ];
86
+ function isCustomEvent(name) {
87
+ return !builtInEvents.includes(name);
88
+ }
@@ -1,9 +1,9 @@
1
- import { AttributeNode, ComponentNode, DirectiveNode, ElementNode, RootNode, TemplateChildNode, TransformContext } from '@vue/compiler-core';
1
+ import { AttributeNode, ComponentNode, DirectiveNode, ElementNode, RootNode, ExpressionNode, TemplateChildNode, TransformContext } from '@vue/compiler-core';
2
2
  export declare const VUE_REF = "r";
3
3
  export declare const VUE_REF_IN_FOR = "r-i-f";
4
4
  export declare function isUserComponent(node: RootNode | TemplateChildNode, context: TransformContext): node is ComponentNode;
5
5
  export declare function createAttributeNode(name: string, content: string): AttributeNode;
6
6
  export declare function addStaticClass(node: ElementNode, clazz: string): string | number | undefined;
7
- export declare function createDirectiveNode(name: string, arg: string, exp: string): DirectiveNode;
7
+ export declare function createDirectiveNode(name: string, arg: string, exp: string | ExpressionNode): DirectiveNode;
8
8
  export declare function createOnDirectiveNode(name: string, value: string): DirectiveNode;
9
- export declare function createBindDirectiveNode(name: string, value: string): DirectiveNode;
9
+ export declare function createBindDirectiveNode(name: string, value: string | ExpressionNode): DirectiveNode;
package/dist/vue/utils.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createBindDirectiveNode = exports.createOnDirectiveNode = exports.createDirectiveNode = exports.addStaticClass = exports.createAttributeNode = exports.isUserComponent = exports.VUE_REF_IN_FOR = exports.VUE_REF = void 0;
4
+ const shared_1 = require("@vue/shared");
4
5
  const uni_shared_1 = require("@dcloudio/uni-shared");
5
6
  const compiler_core_1 = require("@vue/compiler-core");
6
7
  exports.VUE_REF = 'r';
@@ -51,7 +52,7 @@ function createDirectiveNode(name, arg, exp) {
51
52
  modifiers: [],
52
53
  loc: compiler_core_1.locStub,
53
54
  arg: (0, compiler_core_1.createSimpleExpression)(arg, true),
54
- exp: (0, compiler_core_1.createSimpleExpression)(exp, false),
55
+ exp: (0, shared_1.isString)(exp) ? (0, compiler_core_1.createSimpleExpression)(exp, false) : exp,
55
56
  };
56
57
  }
57
58
  exports.createDirectiveNode = createDirectiveNode;
package/lib/nvue.css CHANGED
@@ -1 +1,34 @@
1
- label,scroll-view,swiper-item,view{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}image,input,scroll-view,swiper,swiper-item,text,textarea,video,view{position:relative;border:0 solid #000;box-sizing:border-box}swiper-item{position:absolute}button{margin:0}
1
+ label,
2
+ scroll-view,
3
+ swiper-item,
4
+ view {
5
+ display: flex;
6
+ flex-direction: column;
7
+ flex-shrink: 0;
8
+ flex-grow: 0;
9
+ flex-basis: auto;
10
+ align-items: stretch;
11
+ align-content: flex-start;
12
+ }
13
+
14
+ image,
15
+ input,
16
+ scroll-view,
17
+ swiper,
18
+ swiper-item,
19
+ text,
20
+ textarea,
21
+ video,
22
+ view {
23
+ position: relative;
24
+ border: 0 solid #000;
25
+ box-sizing: border-box;
26
+ }
27
+
28
+ swiper-item {
29
+ position: absolute;
30
+ }
31
+
32
+ button {
33
+ margin: 0;
34
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dcloudio/uni-cli-shared",
3
- "version": "3.0.0-alpha-3021220211102001",
3
+ "version": "3.0.0-alpha-3021220211105008",
4
4
  "description": "@dcloudio/uni-cli-shared",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -21,7 +21,7 @@
21
21
  "@babel/parser": "^7.15.0",
22
22
  "@babel/types": "^7.15.0",
23
23
  "@rollup/pluginutils": "^4.1.1",
24
- "@vue/compiler-core": "^3.2.20",
24
+ "@vue/compiler-core": "^3.2.21",
25
25
  "chokidar": "^3.5.2",
26
26
  "compare-versions": "^3.6.0",
27
27
  "debug": "^4.3.1",
@@ -37,7 +37,7 @@
37
37
  "tapable": "^2.2.0",
38
38
  "xregexp": "3.1.0"
39
39
  },
40
- "gitHead": "7bcc3303c15141d377645a4995ce186f10ed6b78",
40
+ "gitHead": "3dee78eb8ec9e5767c6d04757d934b9f40338658",
41
41
  "devDependencies": {
42
42
  "@types/hash-sum": "^1.0.0"
43
43
  }